import { SettingsContainer, SyncSettings } from "src/settings/settings"; import * as plugin from "../../../backend/sync_lib/pkg/sync_lib.js"; import createClient, { Client } from "openapi-fetch"; import type { components, paths } from "./types"; // generated by openapi-typescript import { Logger } from "src/logger.js"; export class Syncer { private static vault_id = "default"; private client: Client; public constructor(private settings: SettingsContainer) { this.createClient(settings.getSettings()); settings.onChange((s) => this.createClient(s)); } private createClient(settings: SyncSettings) { this.client = createClient({ baseUrl: settings.remoteUri, }); } public async onCreate( relativePath: string, content: string ): Promise< components["schemas"]["DocumentVersionWithoutContent"] | undefined > { let response = await this.client.POST("/vaults/{vault_id}/documents", { params: { path: { vault_id: Syncer.vault_id }, header: { authorization: "Bearer " + this.settings.getSettings().token, }, }, body: { contentBase64: plugin.string_to_base64(content), createdDate: new Date().toISOString(), isBinary: true, relativePath, }, }); Logger.getInstance().info( "Created document " + JSON.stringify(response.data) ); return response.data; } private uri(path: string) { let uri = this.settings.getSettings().remoteUri; if (!uri.endsWith("/")) { uri += "/"; } return uri + path; } }