From d260011ce8a4f5e1fa293a736cb418890a93eed8 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sat, 3 Mar 2018 21:47:04 -0700 Subject: [PATCH] + New file base list export functionality (early beta!) * File base area startup() and cleanup * Better prepViewController() signature --- core/file_base_area.js | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/core/file_base_area.js b/core/file_base_area.js index 6c7318d6..5f3b974a 100644 --- a/core/file_base_area.js +++ b/core/file_base_area.js @@ -26,6 +26,7 @@ const iconv = require('iconv-lite'); const execFile = require('child_process').execFile; const moment = require('moment'); +exports.startup = startup; exports.isInternalArea = isInternalArea; exports.getAvailableFileAreas = getAvailableFileAreas; exports.getAvailableFileAreaTags = getAvailableFileAreaTags; @@ -42,6 +43,7 @@ exports.scanFile = scanFile; exports.scanFileAreaForChanges = scanFileAreaForChanges; exports.getDescFromFileName = getDescFromFileName; exports.getAreaStats = getAreaStats; +exports.cleanUpTempSessionItems = cleanUpTempSessionItems; // for scheduler: exports.updateAreaStatsScheduledEvent = updateAreaStatsScheduledEvent; @@ -52,6 +54,10 @@ const WellKnownAreaTags = exports.WellKnownAreaTags = { TempDownloads : 'system_temporary_download', }; +function startup(cb) { + return cleanUpTempSessionItems(cb); +} + function isInternalArea(areaTag) { return [ WellKnownAreaTags.MessageAreaAttach, WellKnownAreaTags.TempDownloads ].includes(areaTag); } @@ -935,4 +941,42 @@ function updateAreaStatsScheduledEvent(args, cb) { return cb(err); }); +} + +function cleanUpTempSessionItems(cb) { + // find (old) temporary session items and nuke 'em + const filter = { + areaTag : WellKnownAreaTags.TempDownloads, + metaPairs : [ + { + name : 'session_temp_dl', + value : 1 + } + ] + }; + + FileEntry.findFiles(filter, (err, fileIds) => { + if(err) { + return cb(err); + } + + async.each(fileIds, (fileId, nextFileId) => { + const fileEntry = new FileEntry(); + fileEntry.load(fileId, err => { + if(err) { + Log.warn( { fileId }, 'Failed loading temporary session download item for cleanup'); + return nextFileId(null); + } + + FileEntry.removeEntry(fileEntry, { removePhysFile : true }, err => { + if(err) { + Log.warn( { fileId : fileEntry.fileId, filePath : fileEntry.filePath }, 'Failed to clean up temporary session download item'); + } + return nextFileId(null); + }); + }); + }, () => { + return cb(null); + }); + }); } \ No newline at end of file