2020
2121define ( function ( require , exports , module ) {
2222 const Global = require ( "./global" ) ;
23- const PreferencesBase = require ( "preferences/PreferencesBase" ) ;
23+ const FileSystem = require ( "filesystem/FileSystem" ) ;
24+ const FileUtils = require ( "file/FileUtils" ) ;
25+ const FileSystemError = require ( "filesystem/FileSystemError" ) ;
2426
2527 const SNIPPETS_FILE_PATH = brackets . app . getApplicationSupportDirectory ( ) + "/customSnippets.json" ;
2628
27- // the file storage for storing the snippets
28- const fileStorage = new PreferencesBase . FileStorage ( SNIPPETS_FILE_PATH , {
29- snippets : [ ]
30- } ) ;
31-
3229 /**
3330 * This function is responsible to load snippets from file storage
3431 * @returns {Promise } a promise that resolves when snippets are loaded
3532 */
3633 function loadSnippetsFromState ( ) {
3734 return new Promise ( ( resolve , reject ) => {
38- fileStorage
39- . load ( )
40- . done ( function ( data ) {
41- if ( data && data . snippets && Array . isArray ( data . snippets ) ) {
42- Global . SnippetHintsList = data . snippets ;
43- } else {
44- // no snippets are present
45- Global . SnippetHintsList = [ ] ;
35+ const file = FileSystem . getFileForPath ( SNIPPETS_FILE_PATH ) ;
36+
37+ // true is for bypassCache, to get the latest content always
38+ const readPromise = FileUtils . readAsText ( file , true ) ;
39+
40+ readPromise
41+ . done ( function ( text ) {
42+ try {
43+ const data = JSON . parse ( text ) ;
44+ if ( data && data . snippets && Array . isArray ( data . snippets ) ) {
45+ Global . SnippetHintsList = data . snippets ;
46+ } else {
47+ // no snippets are present
48+ Global . SnippetHintsList = [ ] ;
49+ }
50+ resolve ( ) ;
51+ } catch ( error ) {
52+ console . error ( "Error parsing snippets JSON:" , error ) ;
53+ Global . SnippetHintsList = [ ] ; // fallback
54+ resolve ( ) ;
4655 }
47- resolve ( ) ;
4856 } )
4957 . fail ( function ( error ) {
50- console . error ( "unable to load snippets from file storage:" , error ) ;
51- Global . SnippetHintsList = [ ] ; // since it failed we init a empty array
52- reject ( error ) ;
58+ if ( error === FileSystemError . NOT_FOUND ) {
59+ // file is not present, empty array
60+ Global . SnippetHintsList = [ ] ;
61+ resolve ( ) ;
62+ } else {
63+ console . error ( "Unable to load snippets from file storage:" , error ) ;
64+ Global . SnippetHintsList = [ ] ;
65+ reject ( error ) ;
66+ }
5367 } ) ;
5468 } ) ;
5569 }
@@ -64,13 +78,19 @@ define(function (require, exports, module) {
6478 snippets : Global . SnippetHintsList
6579 } ;
6680
67- fileStorage
68- . save ( dataToSave )
69- . done ( ( ) => {
81+ const file = FileSystem . getFileForPath ( SNIPPETS_FILE_PATH ) ;
82+ // 2 is for pretty print
83+ const jsonText = JSON . stringify ( dataToSave , null , 2 ) ;
84+
85+ // true is allowBlindWrite to overwrite without checking file contents
86+ const writePromise = FileUtils . writeText ( file , jsonText , true ) ;
87+
88+ writePromise
89+ . done ( function ( ) {
7090 resolve ( ) ;
7191 } )
72- . fail ( ( error ) => {
73- console . error ( "unable to save snippets to file storage:" , error ) ;
92+ . fail ( function ( error ) {
93+ console . error ( "Unable to save snippets to file storage:" , error ) ;
7494 reject ( error ) ;
7595 } ) ;
7696 } ) ;
0 commit comments