mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2025-12-13 17:55:56 +00:00
0.24.0.dev-rc3
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "obsidian-livesync",
|
"id": "obsidian-livesync",
|
||||||
"name": "Self-hosted LiveSync",
|
"name": "Self-hosted LiveSync",
|
||||||
"version": "0.24.0.dev-rc2",
|
"version": "0.24.0.dev-rc3",
|
||||||
"minAppVersion": "0.9.12",
|
"minAppVersion": "0.9.12",
|
||||||
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
|
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
|
||||||
"author": "vorotamoroz",
|
"author": "vorotamoroz",
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "obsidian-livesync",
|
"name": "obsidian-livesync",
|
||||||
"version": "0.24.0.dev-rc2",
|
"version": "0.24.0.dev-rc3",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "obsidian-livesync",
|
"name": "obsidian-livesync",
|
||||||
"version": "0.24.0.dev-rc2",
|
"version": "0.24.0.dev-rc3",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.645.0",
|
"@aws-sdk/client-s3": "^3.645.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "obsidian-livesync",
|
"name": "obsidian-livesync",
|
||||||
"version": "0.24.0.dev-rc2",
|
"version": "0.24.0.dev-rc3",
|
||||||
"description": "Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
|
"description": "Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -343,7 +343,7 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
get useSyncPluginEtc() {
|
get useSyncPluginEtc() {
|
||||||
return this.plugin.settings.usePluginEtc;
|
return this.plugin.settings.usePluginEtc;
|
||||||
}
|
}
|
||||||
$isThisModuleEnabled() {
|
_isThisModuleEnabled() {
|
||||||
return this.plugin.settings.usePluginSync;
|
return this.plugin.settings.usePluginSync;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,7 +352,7 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
|
|
||||||
pluginList: IPluginDataExDisplay[] = [];
|
pluginList: IPluginDataExDisplay[] = [];
|
||||||
showPluginSyncModal() {
|
showPluginSyncModal() {
|
||||||
if (!this.$isThisModuleEnabled()) {
|
if (!this._isThisModuleEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.pluginDialog) {
|
if (this.pluginDialog) {
|
||||||
@@ -417,7 +417,7 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
return this.getFileCategory(filePath) != "";
|
return this.getFileCategory(filePath) != "";
|
||||||
}
|
}
|
||||||
async $everyOnDatabaseInitialized(showNotice: boolean) {
|
async $everyOnDatabaseInitialized(showNotice: boolean) {
|
||||||
if (!this.$isThisModuleEnabled()) return true;
|
if (!this._isThisModuleEnabled()) return true;
|
||||||
try {
|
try {
|
||||||
Logger("Scanning customizations...");
|
Logger("Scanning customizations...");
|
||||||
await this.scanAllConfigFiles(showNotice);
|
await this.scanAllConfigFiles(showNotice);
|
||||||
@@ -429,7 +429,7 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
async $everyBeforeReplicate(showNotice: boolean) {
|
async $everyBeforeReplicate(showNotice: boolean) {
|
||||||
if (!this.$isThisModuleEnabled()) return true;
|
if (!this._isThisModuleEnabled()) return true;
|
||||||
if (this.settings.autoSweepPlugins) {
|
if (this.settings.autoSweepPlugins) {
|
||||||
await this.scanAllConfigFiles(showNotice);
|
await this.scanAllConfigFiles(showNotice);
|
||||||
return true;
|
return true;
|
||||||
@@ -437,8 +437,8 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
async $everyOnResumeProcess(): Promise<boolean> {
|
async $everyOnResumeProcess(): Promise<boolean> {
|
||||||
if (!this.$isThisModuleEnabled()) return true;
|
if (!this._isThisModuleEnabled()) return true;
|
||||||
if (this.$isMainSuspended()) {
|
if (this._isMainSuspended()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (this.settings.autoSweepPlugins) {
|
if (this.settings.autoSweepPlugins) {
|
||||||
@@ -449,7 +449,7 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
}
|
}
|
||||||
$everyAfterResumeProcess(): Promise<boolean> {
|
$everyAfterResumeProcess(): Promise<boolean> {
|
||||||
const q = activeDocument.querySelector(`.livesync-ribbon-showcustom`);
|
const q = activeDocument.querySelector(`.livesync-ribbon-showcustom`);
|
||||||
q?.toggleClass("sls-hidden", !this.$isThisModuleEnabled());
|
q?.toggleClass("sls-hidden", !this._isThisModuleEnabled());
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
async reloadPluginList(showMessage: boolean) {
|
async reloadPluginList(showMessage: boolean) {
|
||||||
@@ -754,7 +754,7 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async updatePluginList(showMessage: boolean, updatedDocumentPath?: FilePathWithPrefix): Promise<void> {
|
async updatePluginList(showMessage: boolean, updatedDocumentPath?: FilePathWithPrefix): Promise<void> {
|
||||||
if (!this.$isThisModuleEnabled()) {
|
if (!this._isThisModuleEnabled()) {
|
||||||
this.pluginScanProcessor.clearQueue();
|
this.pluginScanProcessor.clearQueue();
|
||||||
this.pluginList = [];
|
this.pluginList = [];
|
||||||
pluginList.set(this.pluginList)
|
pluginList.set(this.pluginList)
|
||||||
@@ -1019,10 +1019,10 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
}
|
}
|
||||||
async $anyModuleParsedReplicationResultItem(docs: PouchDB.Core.ExistingDocument<EntryDoc>) {
|
async $anyModuleParsedReplicationResultItem(docs: PouchDB.Core.ExistingDocument<EntryDoc>) {
|
||||||
if (!docs._id.startsWith(ICXHeader)) return undefined;
|
if (!docs._id.startsWith(ICXHeader)) return undefined;
|
||||||
if (this.$isThisModuleEnabled()) {
|
if (this._isThisModuleEnabled()) {
|
||||||
await this.updatePluginList(false, (docs as AnyEntry).path ? (docs as AnyEntry).path : this.getPath((docs as AnyEntry)));
|
await this.updatePluginList(false, (docs as AnyEntry).path ? (docs as AnyEntry).path : this.getPath((docs as AnyEntry)));
|
||||||
}
|
}
|
||||||
if (this.$isThisModuleEnabled() && this.plugin.settings.notifyPluginOrSettingUpdated) {
|
if (this._isThisModuleEnabled() && this.plugin.settings.notifyPluginOrSettingUpdated) {
|
||||||
if (!this.pluginDialog || (this.pluginDialog && !this.pluginDialog.isOpened())) {
|
if (!this.pluginDialog || (this.pluginDialog && !this.pluginDialog.isOpened())) {
|
||||||
const fragment = createFragment((doc) => {
|
const fragment = createFragment((doc) => {
|
||||||
doc.createEl("span", undefined, (a) => {
|
doc.createEl("span", undefined, (a) => {
|
||||||
@@ -1063,9 +1063,9 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
}
|
}
|
||||||
async $everyRealizeSettingSyncMode(): Promise<boolean> {
|
async $everyRealizeSettingSyncMode(): Promise<boolean> {
|
||||||
this.periodicPluginSweepProcessor?.disable();
|
this.periodicPluginSweepProcessor?.disable();
|
||||||
if (!this.$isMainReady) return true;
|
if (!this._isMainReady) return true;
|
||||||
if (!this.$isMainSuspended()) return true;
|
if (!this._isMainSuspended()) return true;
|
||||||
if (!this.$isThisModuleEnabled()) return true;
|
if (!this._isThisModuleEnabled()) return true;
|
||||||
if (this.settings.autoSweepPlugins) {
|
if (this.settings.autoSweepPlugins) {
|
||||||
await this.scanAllConfigFiles(false);
|
await this.scanAllConfigFiles(false);
|
||||||
}
|
}
|
||||||
@@ -1323,9 +1323,9 @@ export class ConfigSync extends LiveSyncCommands implements IObsidianModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async watchVaultRawEventsAsync(path: FilePath) {
|
async watchVaultRawEventsAsync(path: FilePath) {
|
||||||
// if (!this.$isMainReady) return true;
|
if (!this._isMainReady) return true;
|
||||||
// if (!this.$isMainSuspended()) return true;
|
if (!this._isMainSuspended()) return true;
|
||||||
if (!this.$isThisModuleEnabled()) return true;
|
if (!this._isThisModuleEnabled()) return true;
|
||||||
if (!this.isTargetPath(path)) return false;
|
if (!this.isTargetPath(path)) return false;
|
||||||
const stat = await this.plugin.storageAccess.statHidden(path);
|
const stat = await this.plugin.storageAccess.statHidden(path);
|
||||||
// Make sure that target is a file.
|
// Make sure that target is a file.
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ import type { IObsidianModule } from "../../modules/AbstractObsidianModule.ts";
|
|||||||
|
|
||||||
export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule {
|
export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule {
|
||||||
|
|
||||||
$isThisModuleEnabled() {
|
_isThisModuleEnabled() {
|
||||||
return this.plugin.settings.syncInternalFiles;
|
return this.plugin.settings.syncInternalFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
periodicInternalFileScanProcessor: PeriodicProcessor = new PeriodicProcessor(this.plugin, async () => this.$isThisModuleEnabled() && this.$isDatabaseReady() && await this.syncInternalFilesAndDatabase("push", false));
|
periodicInternalFileScanProcessor: PeriodicProcessor = new PeriodicProcessor(this.plugin, async () => this._isThisModuleEnabled() && this._isDatabaseReady() && await this.syncInternalFilesAndDatabase("push", false));
|
||||||
|
|
||||||
get kvDB() {
|
get kvDB() {
|
||||||
return this.plugin.kvDB;
|
return this.plugin.kvDB;
|
||||||
@@ -39,7 +39,7 @@ export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
async $everyOnDatabaseInitialized(showNotice: boolean) {
|
async $everyOnDatabaseInitialized(showNotice: boolean) {
|
||||||
if (this.$isThisModuleEnabled()) {
|
if (this._isThisModuleEnabled()) {
|
||||||
try {
|
try {
|
||||||
Logger("Synchronizing hidden files...");
|
Logger("Synchronizing hidden files...");
|
||||||
await this.syncInternalFilesAndDatabase("push", showNotice);
|
await this.syncInternalFilesAndDatabase("push", showNotice);
|
||||||
@@ -52,7 +52,7 @@ export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
async $everyBeforeReplicate(showNotice: boolean) {
|
async $everyBeforeReplicate(showNotice: boolean) {
|
||||||
if (this.$isThisModuleEnabled() && this.$isDatabaseReady() && this.settings.syncInternalFilesBeforeReplication && !this.settings.watchInternalFileChanges) {
|
if (this._isThisModuleEnabled() && this._isDatabaseReady() && this.settings.syncInternalFilesBeforeReplication && !this.settings.watchInternalFileChanges) {
|
||||||
await this.syncInternalFilesAndDatabase("push", showNotice);
|
await this.syncInternalFilesAndDatabase("push", showNotice);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -61,22 +61,22 @@ export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule
|
|||||||
|
|
||||||
async $everyOnResumeProcess(): Promise<boolean> {
|
async $everyOnResumeProcess(): Promise<boolean> {
|
||||||
this.periodicInternalFileScanProcessor?.disable();
|
this.periodicInternalFileScanProcessor?.disable();
|
||||||
if (this.$isMainSuspended())
|
if (this._isMainSuspended())
|
||||||
return true;
|
return true;
|
||||||
if (this.$isThisModuleEnabled()) {
|
if (this._isThisModuleEnabled()) {
|
||||||
await this.syncInternalFilesAndDatabase("safe", false);
|
await this.syncInternalFilesAndDatabase("safe", false);
|
||||||
}
|
}
|
||||||
this.periodicInternalFileScanProcessor.enable(this.$isThisModuleEnabled() && this.settings.syncInternalFilesInterval ? (this.settings.syncInternalFilesInterval * 1000) : 0);
|
this.periodicInternalFileScanProcessor.enable(this._isThisModuleEnabled() && this.settings.syncInternalFilesInterval ? (this.settings.syncInternalFilesInterval * 1000) : 0);
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
$everyRealizeSettingSyncMode(): Promise<boolean> {
|
$everyRealizeSettingSyncMode(): Promise<boolean> {
|
||||||
this.periodicInternalFileScanProcessor?.disable();
|
this.periodicInternalFileScanProcessor?.disable();
|
||||||
if (this.$isMainSuspended())
|
if (this._isMainSuspended())
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
if (!this.plugin.isReady)
|
if (!this.plugin.isReady)
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
this.periodicInternalFileScanProcessor.enable(this.$isThisModuleEnabled() && this.settings.syncInternalFilesInterval ? (this.settings.syncInternalFilesInterval * 1000) : 0);
|
this.periodicInternalFileScanProcessor.enable(this._isThisModuleEnabled() && this.settings.syncInternalFilesInterval ? (this.settings.syncInternalFilesInterval * 1000) : 0);
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule
|
|||||||
return await this.watchVaultRawEventsAsync(path);
|
return await this.watchVaultRawEventsAsync(path);
|
||||||
}
|
}
|
||||||
async watchVaultRawEventsAsync(path: FilePath): Promise<boolean | undefined> {
|
async watchVaultRawEventsAsync(path: FilePath): Promise<boolean | undefined> {
|
||||||
if (!this.$isThisModuleEnabled()) return false;
|
if (!this._isThisModuleEnabled()) return false;
|
||||||
if (!isInternalMetadata(path)) return false;
|
if (!isInternalMetadata(path)) return false;
|
||||||
|
|
||||||
// Exclude files handled by customization sync
|
// Exclude files handled by customization sync
|
||||||
@@ -274,7 +274,7 @@ export class HiddenFileSync extends LiveSyncCommands implements IObsidianModule
|
|||||||
}
|
}
|
||||||
|
|
||||||
async $anyProcessOptionalSyncFiles(doc: LoadedEntry): Promise<boolean | undefined> {
|
async $anyProcessOptionalSyncFiles(doc: LoadedEntry): Promise<boolean | undefined> {
|
||||||
if (isInternalMetadata(doc._id) && this.$isThisModuleEnabled()) {
|
if (isInternalMetadata(doc._id) && this._isThisModuleEnabled()) {
|
||||||
//system file
|
//system file
|
||||||
const filename = getPath(doc);
|
const filename = getPath(doc);
|
||||||
if (await this.plugin.$$isTargetFile(filename)) {
|
if (await this.plugin.$$isTargetFile(filename)) {
|
||||||
|
|||||||
@@ -31,13 +31,13 @@ export abstract class LiveSyncCommands {
|
|||||||
abstract onunload(): void;
|
abstract onunload(): void;
|
||||||
abstract onload(): void | Promise<void>;
|
abstract onload(): void | Promise<void>;
|
||||||
|
|
||||||
$isMainReady() {
|
_isMainReady() {
|
||||||
return this.plugin.$isMainReady();
|
return this.plugin._isMainReady();
|
||||||
}
|
}
|
||||||
$isMainSuspended() {
|
_isMainSuspended() {
|
||||||
return this.plugin.$isMainSuspended();
|
return this.plugin._isMainSuspended();
|
||||||
}
|
}
|
||||||
$isDatabaseReady() {
|
_isDatabaseReady() {
|
||||||
return this.plugin.$isDatabaseReady();
|
return this.plugin._isDatabaseReady();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -618,10 +618,10 @@ export default class ObsidianLiveSyncPlugin extends Plugin implements LiveSyncLo
|
|||||||
$everyModuleTestMultiDevice(): Promise<boolean> { return InterceptiveEvery; }
|
$everyModuleTestMultiDevice(): Promise<boolean> { return InterceptiveEvery; }
|
||||||
$$addTestResult(name: string, key: string, result: boolean, summary?: string, message?: string): void { throwShouldBeOverridden(); }
|
$$addTestResult(name: string, key: string, result: boolean, summary?: string, message?: string): void { throwShouldBeOverridden(); }
|
||||||
|
|
||||||
$isMainReady(): boolean { return this.isReady; }
|
_isMainReady(): boolean { return this.isReady; }
|
||||||
$isMainSuspended(): boolean { return this.suspended; }
|
_isMainSuspended(): boolean { return this.suspended; }
|
||||||
$isThisModuleEnabled(): boolean { return true; }
|
_isThisModuleEnabled(): boolean { return true; }
|
||||||
$isDatabaseReady(): boolean { return this.localDatabase.isReady; }
|
_isDatabaseReady(): boolean { return this.localDatabase.isReady; }
|
||||||
|
|
||||||
$anyGetAppId(): Promise<string | undefined> { return InterceptiveAny; }
|
$anyGetAppId(): Promise<string | undefined> { return InterceptiveAny; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,18 +38,18 @@ export abstract class AbstractObsidianModule extends AbstractModule {
|
|||||||
saveSettings = this.plugin.saveSettings.bind(this.plugin);
|
saveSettings = this.plugin.saveSettings.bind(this.plugin);
|
||||||
|
|
||||||
|
|
||||||
$isMainReady() {
|
_isMainReady() {
|
||||||
return this.core.$isMainReady();
|
return this.core._isMainReady();
|
||||||
}
|
}
|
||||||
$isMainSuspended() {
|
_isMainSuspended() {
|
||||||
return this.core.$isMainSuspended();
|
return this.core._isMainSuspended();
|
||||||
}
|
}
|
||||||
$isDatabaseReady() {
|
_isDatabaseReady() {
|
||||||
return this.core.$isDatabaseReady();
|
return this.core._isDatabaseReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
//should be overridden
|
//should be overridden
|
||||||
$isThisModuleEnabled() {
|
_isThisModuleEnabled() {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,9 +9,12 @@ import { writable } from "svelte/store";
|
|||||||
|
|
||||||
export class ModuleDev extends AbstractObsidianModule implements IObsidianModule {
|
export class ModuleDev extends AbstractObsidianModule implements IObsidianModule {
|
||||||
|
|
||||||
|
$everyOnloadStart(): Promise<boolean> {
|
||||||
|
__onMissingTranslation(() => { });
|
||||||
|
return Promise.resolve(true);
|
||||||
|
}
|
||||||
$everyOnloadAfterLoadSettings(): Promise<boolean> {
|
$everyOnloadAfterLoadSettings(): Promise<boolean> {
|
||||||
if (!this.settings.enableDebugTools) return Promise.resolve(true);
|
if (!this.settings.enableDebugTools) return Promise.resolve(true);
|
||||||
__onMissingTranslation(() => { });
|
|
||||||
// eslint-disable-next-line no-unused-labels
|
// eslint-disable-next-line no-unused-labels
|
||||||
__onMissingTranslation((key) => {
|
__onMissingTranslation((key) => {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
|
|||||||
@@ -23,6 +23,13 @@ Thank you, and I hope your troubles will be resolved!
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 0.24.0.dev-rc3
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- No longer Missing Translation Warning is shown in the console.
|
||||||
|
- Fixed the issue where some functions were not working properly (`_` started functions).
|
||||||
|
|
||||||
## 0.24.0.dev-rc2
|
## 0.24.0.dev-rc2
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
Reference in New Issue
Block a user