11const path = require ( "path" ) ;
22const fs = require ( "fs" ) ;
3- const { app} = require ( "electron" )
4- const ssbMarkdown = require ( "ssb-markdown" )
3+ const { app } = require ( "electron" ) ;
4+ const ssbMarkdown = require ( "ssb-markdown" ) ;
55
6- module . exports = {
6+ const announcements = {
7+ appData : ( ...extra ) => {
8+ let result
9+ switch ( process . platform ) {
10+ case "win32" :
11+ result = path . join ( process . env . APPDATA , ...extra )
12+ break
13+ case "darwin" :
14+ result = path . join ( process . env . HOME , 'Library' , 'Application Support' , ...extra )
15+ break
16+ case "linux" :
17+ result = path . join ( process . env . HOME , ".config" , ...extra )
18+ break
19+ default :
20+ result = path . join ( process . env . HOME , ".config" , ...extra )
21+ break
22+ }
23+ return result
24+ } ,
25+ destinationFolder : ( ) => {
26+ return announcements . appData (
27+ "Patchwork" ,
28+ "announcements" ,
29+ ) ;
30+ } ,
31+ unreadBox : ( ) => {
32+ return path . join ( announcements . destinationFolder ( ) , "unread" ) ;
33+ } ,
34+ readBox : ( ) => {
35+ return path . join ( announcements . destinationFolder ( ) , "read" ) ;
36+ } ,
737 copy : ( ) => {
8- const destinationFolder = path . join ( app . getPath ( "appData" ) , "Patchwork" , "announcements" )
9- const unreadBox = path . join ( destinationFolder , "unread" )
10- const readBox = path . join ( destinationFolder , "read" )
11- const sourceFolder = path . join ( app . getAppPath ( ) , "docs" , "announcements" )
38+ const readBox = announcements . readBox ( )
39+ const unreadBox = announcements . unreadBox ( )
40+
41+ const sourceFolder = path . join (
42+ app . getAppPath ( ) ,
43+ "docs" ,
44+ "announcements" ,
45+ ) ;
1246
13- const announcementFiles = fs . readdirSync ( sourceFolder )
47+ const announcementFiles = fs . readdirSync ( sourceFolder ) ;
1448
15- fs . mkdirSync ( unreadBox , { recursive : true } )
16- fs . mkdirSync ( readBox , { recursive : true } )
49+ fs . mkdirSync ( unreadBox , { recursive : true } ) ;
50+ fs . mkdirSync ( readBox , { recursive : true } ) ;
1751
18- announcementFiles . forEach ( filename => {
52+ announcementFiles . forEach ( ( filename ) => {
1953 if ( ! fs . existsSync ( path . join ( readBox , filename ) ) ) {
20- fs . copyFileSync ( path . join ( sourceFolder , filename ) ,
21- path . join ( unreadBox , filename ) )
54+ fs . copyFileSync (
55+ path . join ( sourceFolder , filename ) ,
56+ path . join ( unreadBox , filename ) ,
57+ ) ;
2258
23- console . log ( "copying announcement: " + filename )
59+ console . log ( "copying announcement: " + filename ) ;
2460 }
25- } )
61+ } ) ;
2662 } ,
2763 markAsRead : ( ) => {
28- const destinationFolder = path . join ( app . getPath ( "appData" ) , "Patchwork" , "announcements" )
29- const unreadBox = path . join ( destinationFolder , "unread" )
30- const readBox = path . join ( destinationFolder , "read" )
64+ const readBox = announcements . readBox ( )
65+ const unreadBox = announcements . unreadBox ( )
66+ const announcementFiles = fs . readdirSync ( unreadBox ) ;
3167
32- const announcementFiles = fs . readdirSync ( unreadBox )
68+ announcementFiles . forEach ( ( filename ) => {
69+ fs . renameSync (
70+ path . join ( unreadBox , filename ) ,
71+ path . join ( readBox , filename ) ,
72+ ) ;
3373
34- announcementFiles . forEach ( filename => {
35- fs . renameSync (
36- path . join ( unreadBox , filename ) ,
37- path . join ( readBox , filename ) )
38-
39- console . log ( "moving announcement: " + filename )
40- } )
74+ console . log ( "moving announcement: " + filename ) ;
75+ } ) ;
4176 } ,
4277 available : ( ) => {
43- const destinationFolder = path . join ( app . getPath ( "appData" ) , "Patchwork" , "announcements" )
44- const unreadBox = path . join ( destinationFolder , "unread" )
45- const announcementFiles = fs . readdirSync ( unreadBox )
78+ const unreadBox = announcements . unreadBox ( )
79+ const announcementFiles = fs . readdirSync ( unreadBox ) ;
4680
47- return announcementFiles . length > 0
81+ return announcementFiles . length > 0 ;
4882 } ,
4983 getAsHTML : ( ) => {
50- const destinationFolder = path . join ( app . getPath ( "appData" ) , "Patchwork" , "announcements" )
51- const unreadBox = path . join ( destinationFolder , "unread" )
52- const announcementFiles = fs . readdirSync ( unreadBox )
84+ const unreadBox = announcements . unreadBox ( )
85+ const announcementFiles = fs . readdirSync ( unreadBox ) ;
86+ const html = announcementFiles . map ( ( f ) => {
87+ const markdownContent = fs . readFileSync ( path . join ( unreadBox , f ) ) ;
88+ const htmlContent = ssbMarkdown . block ( markdownContent ) ;
5389
54- const html = announcementFiles . map ( f => {
55- const markdownContent = fs . readFileSync ( path . join ( unreadBox , f ) )
56- const htmlContent = ssbMarkdown . block ( markdownContent )
90+ return htmlContent ;
91+ } ) ;
5792
58- return htmlContent
59- } )
93+ return html . join ( `---\n\n` ) ;
94+ } ,
95+ markUpdateNoticeAsSeen : ( version ) => {
96+ const readBox = announcements . readBox ( )
97+ let filename = `ignore-update-${ version } .ini` ;
98+ let fullPath = path . join ( readBox , filename ) ;
99+ let content = `
100+ version = "${ version } "
101+ ` ;
60102
61- return html . join ( `---\n\n` )
62- }
103+ fs . writeFileSync ( fullPath , content ) ;
104+ } ,
105+ isUpdateNoticeIgnored : ( version ) => {
106+ const readBox = announcements . readBox ( )
107+ let filename = `ignore-update-${ version } .ini` ;
108+ let fullPath = path . join ( readBox , filename ) ;
109+ return fs . existsSync ( fullPath ) ;
110+ } ,
111+ } ;
63112
64- }
113+ module . exports = announcements
0 commit comments