mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-21 09:38:01 +02:00
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
const { dirname } = require('lib/path-utils.js');
|
|
const { shim } = require('lib/shim');
|
|
const Setting = require('lib/models/Setting');
|
|
const pluginAssets = require('./pluginAssets/index');
|
|
const KvStore = require('lib/services/KvStore.js');
|
|
|
|
export default class PluginAssetsLoader {
|
|
|
|
static instance_:PluginAssetsLoader = null;
|
|
logger_:any = null;
|
|
|
|
static instance() {
|
|
if (PluginAssetsLoader.instance_) return PluginAssetsLoader.instance_;
|
|
PluginAssetsLoader.instance_ = new PluginAssetsLoader();
|
|
return PluginAssetsLoader.instance_;
|
|
}
|
|
|
|
setLogger(logger:any) {
|
|
this.logger_ = logger;
|
|
}
|
|
|
|
logger() {
|
|
return this.logger_;
|
|
}
|
|
|
|
async importAssets() {
|
|
const destDir = `${Setting.value('resourceDir')}/pluginAssets`;
|
|
await shim.fsDriver().mkdir(destDir);
|
|
|
|
const hash = pluginAssets.hash;
|
|
if (hash === await KvStore.instance().value('PluginAssetsLoader.lastHash')) {
|
|
this.logger().info(`PluginAssetsLoader: Assets are up to date. Hash: ${hash}`);
|
|
return;
|
|
}
|
|
|
|
this.logger().info(`PluginAssetsLoader: Importing assets to ${destDir}`);
|
|
|
|
try {
|
|
for (const name in pluginAssets.files) {
|
|
const dataBase64 = pluginAssets.files[name].data;
|
|
const destPath = `${destDir}/${name}`;
|
|
await shim.fsDriver().mkdir(dirname(destPath));
|
|
await shim.fsDriver().unlink(destPath);
|
|
|
|
this.logger().info(`PluginAssetsLoader: Copying: ${name} => ${destPath}`);
|
|
await shim.fsDriver().writeFile(destPath, dataBase64);
|
|
}
|
|
} catch (error) {
|
|
this.logger().error(error);
|
|
}
|
|
|
|
KvStore.instance().setValue('PluginAssetsLoader.lastHash', hash);
|
|
}
|
|
|
|
}
|