11import { 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+
311export 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