mirror of
https://github.com/laurent22/joplin.git
synced 2024-11-30 08:26:59 +02:00
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
class SyncTargetRegistry {
|
|
static classById(syncTargetId) {
|
|
const info = SyncTargetRegistry.reg_[syncTargetId];
|
|
if (!info) throw new Error(`Invalid id: ${syncTargetId}`);
|
|
return info.classRef;
|
|
}
|
|
|
|
static addClass(SyncTargetClass) {
|
|
this.reg_[SyncTargetClass.id()] = {
|
|
id: SyncTargetClass.id(),
|
|
name: SyncTargetClass.targetName(),
|
|
label: SyncTargetClass.label(),
|
|
classRef: SyncTargetClass,
|
|
supportsConfigCheck: SyncTargetClass.supportsConfigCheck(),
|
|
};
|
|
}
|
|
|
|
static allIds() {
|
|
return Object.keys(this.reg_);
|
|
}
|
|
|
|
static nameToId(name) {
|
|
for (const n in this.reg_) {
|
|
if (!this.reg_.hasOwnProperty(n)) continue;
|
|
if (this.reg_[n].name === name) return this.reg_[n].id;
|
|
}
|
|
throw new Error(`Name not found: ${name}. Was the sync target registered?`);
|
|
}
|
|
|
|
static idToMetadata(id) {
|
|
for (const n in this.reg_) {
|
|
if (!this.reg_.hasOwnProperty(n)) continue;
|
|
if (this.reg_[n].id === id) return this.reg_[n];
|
|
}
|
|
throw new Error(`ID not found: ${id}`);
|
|
}
|
|
|
|
static idToName(id) {
|
|
return this.idToMetadata(id).name;
|
|
}
|
|
|
|
static idAndLabelPlainObject(os) {
|
|
const output = {};
|
|
for (const n in this.reg_) {
|
|
if (!this.reg_.hasOwnProperty(n)) continue;
|
|
const info = this.reg_[n];
|
|
if (info.classRef.unsupportedPlatforms().indexOf(os) >= 0) {
|
|
continue;
|
|
}
|
|
output[n] = info.label;
|
|
}
|
|
return output;
|
|
}
|
|
}
|
|
|
|
SyncTargetRegistry.reg_ = {};
|
|
|
|
module.exports = SyncTargetRegistry;
|