Skip to content

Commit 6a5f4fe

Browse files
authored
Fix jsonbin settings migration (#605)
1 parent 1b52aa5 commit 6a5f4fe

File tree

2 files changed

+34
-31
lines changed

2 files changed

+34
-31
lines changed

packages/figma-theemo/src/commands/migrate.ts

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export default class MigrateCommand extends Command {
77

88
execute() {
99
this.migratePluginData();
10-
this.migrateJsonbin();
1110
}
1211

1312
private migratePluginData() {
@@ -28,24 +27,4 @@ export default class MigrateCommand extends Command {
2827
figma.root.setPluginData('nodes', '');
2928
}
3029
}
31-
32-
private migrateJsonbin() {
33-
const jsonbinUrl = this.container.settings.get('tools.jsonbin.url') as string;
34-
35-
if (jsonbinUrl) {
36-
const parts = jsonbinUrl.split('/');
37-
const id = parts.pop();
38-
39-
const settings = new Map(this.container.settings.settings);
40-
settings.delete('tools.jsonbin.url');
41-
settings.set('tools.jsonbin.id', id);
42-
43-
const data = {};
44-
for (const [k,v] of settings.entries()) {
45-
data[k] = v;
46-
}
47-
this.container.settings.save(data);
48-
this.container.commander.run('read-settings');
49-
}
50-
}
5130
}

packages/figma-theemo/src/container/settings-manager.ts

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
import { DEFAULT_CONFIG } from '../../shared/config';
22

3+
function mapToObject(map: Map<string, unknown>): Record<string, unknown> {
4+
const data = {};
5+
for (const [k,v] of map.entries()) {
6+
data[k] = v;
7+
}
8+
return data;
9+
}
10+
311
export default class SettingsManager {
412

513
private cache: Map<string, any>;
@@ -24,7 +32,10 @@ export default class SettingsManager {
2432
const settings = this.readPluginData();
2533
settings['tools.jsonbin.key'] = await figma.clientStorage.getAsync('jsonBinApiKey') ?? '';
2634

27-
return { ...DEFAULT_CONFIG, ...settings };
35+
return mapToObject(this.migrate(new Map(Object.entries({
36+
...DEFAULT_CONFIG,
37+
...settings
38+
}))));
2839
} catch (e) {
2940
console.warn(e);
3041
}
@@ -35,15 +46,7 @@ export default class SettingsManager {
3546
const key = data['tools.jsonbin.key'];
3647
delete data['tools.jsonbin.key'];
3748

38-
const temp = {};
39-
for (const [k,v] of this.settings.entries()) {
40-
temp[k] = v;
41-
}
42-
43-
this.savePluginData({
44-
...temp,
45-
...data
46-
});
49+
this.savePluginData(data);
4750
await figma.clientStorage.setAsync('jsonBinApiKey', key);
4851

4952
data['tools.jsonbin.key'] = key;
@@ -69,4 +72,25 @@ export default class SettingsManager {
6972

7073
this.savePluginData(settings);
7174
}
75+
76+
private migrate(settings: Map<string, string>): Map<string, string> {
77+
const migrated = this.migrateJsonbin(settings);
78+
79+
this.save(mapToObject(migrated));
80+
81+
return migrated;
82+
}
83+
84+
private migrateJsonbin(settings: Map<string, string>) {
85+
if (settings.has('tools.jsonbin.url')) {
86+
const jsonbinUrl = settings.get('tools.jsonbin.url') as string;
87+
const parts = jsonbinUrl.split('/');
88+
const id = parts.pop();
89+
90+
settings.delete('tools.jsonbin.url');
91+
settings.set('tools.jsonbin.id', id);
92+
}
93+
94+
return settings;
95+
}
7296
}

0 commit comments

Comments
 (0)