@@ -135,6 +135,14 @@ class FileContent {
135135 ) ;
136136 }
137137
138+ isOlderThan ( otherFileContent : FileContent | null ) : boolean {
139+ if ( ! otherFileContent ) return false ;
140+ const updatedAt = new Date ( this . updatedAt ) ;
141+ const otherUpdatedAt = new Date ( otherFileContent . updatedAt ) ;
142+
143+ return updatedAt < otherUpdatedAt ;
144+ }
145+
138146 clone ( { id } : { id : string } ) : FileContent {
139147 return new FileContent ( {
140148 title : this . title ,
@@ -264,7 +272,7 @@ export class FileSystemRepo {
264272 private async syncItem (
265273 item : Item ,
266274 beforeSync : boolean = false ,
267- isLocalUpdate : boolean = false
275+ forceUpdate : boolean = false
268276 ) {
269277 const fileContent = FileContent . fromItem ( item ) ;
270278
@@ -279,17 +287,17 @@ export class FileSystemRepo {
279287 true
280288 ) ;
281289
282- if ( data === null || remoteFileContent ?. equals ( data ) || isLocalUpdate ) {
290+ if ( data === null || remoteFileContent ?. equals ( data ) || forceUpdate ) {
283291 await this . setItemData ( fileContent , true ) ;
284292 await this . setItemData ( fileContent , false , basename ) ;
285293 } else {
286294 await this . setItemData ( fileContent , true ) ;
287295 }
288296 }
289297
290- async saveItems ( items : Item [ ] , isLocalUpdate : boolean = false ) {
298+ async saveItems ( items : Item [ ] , forceUpdate : boolean = false ) {
291299 const promises = items . map ( async ( item ) => {
292- await this . syncItem ( item , false , isLocalUpdate ) ;
300+ await this . syncItem ( item , false , forceUpdate ) ;
293301 } ) ;
294302
295303 await Promise . all ( promises ) ;
@@ -298,9 +306,9 @@ export class FileSystemRepo {
298306 async saveItem (
299307 item : Item ,
300308 beforeSync : boolean = false ,
301- isLocalUpdate : boolean = false
309+ forceUpdate : boolean = false
302310 ) {
303- await this . syncItem ( item , beforeSync , isLocalUpdate ) ;
311+ await this . syncItem ( item , beforeSync , forceUpdate ) ;
304312 }
305313
306314 async loadItems ( ) : Promise < QiitaItem [ ] > {
@@ -353,6 +361,7 @@ export class FileSystemRepo {
353361 slide : localFileContent . slide ,
354362 name : basename ,
355363 modified : ! localFileContent . equals ( remoteFileContent ) ,
364+ isOlderThanRemote : localFileContent . isOlderThan ( remoteFileContent ) ,
356365 itemsShowPath : this . generateItemsShowPath ( localFileContent . id , basename ) ,
357366 published : remoteFileContent !== null ,
358367 itemPath,
@@ -388,6 +397,7 @@ export class FileSystemRepo {
388397 slide : localFileContent . slide ,
389398 name : basename ,
390399 modified : ! localFileContent . equals ( remoteFileContent ) ,
400+ isOlderThanRemote : localFileContent . isOlderThan ( remoteFileContent ) ,
391401 itemsShowPath : this . generateItemsShowPath ( localFileContent . id , basename ) ,
392402 published : remoteFileContent !== null ,
393403 itemPath,
0 commit comments