mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-15 09:04:04 +02:00
51 lines
1.2 KiB
JavaScript
51 lines
1.2 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 nameToId(name) {
|
|
for (let 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);
|
|
}
|
|
|
|
static idToMetadata(id) {
|
|
for (let 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() {
|
|
let output = {};
|
|
for (let n in this.reg_) {
|
|
if (!this.reg_.hasOwnProperty(n)) continue;
|
|
output[n] = this.reg_[n].label;
|
|
}
|
|
return output;
|
|
}
|
|
}
|
|
|
|
SyncTargetRegistry.reg_ = {};
|
|
|
|
module.exports = SyncTargetRegistry;
|