108 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
 * This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
function appendActivityLog(title, subtitle, content, icon, timestamp) {
 | 
						|
    if (typeof timestamp == "undefined") {
 | 
						|
        timestamp = time();
 | 
						|
    }
 | 
						|
    let entry = {
 | 
						|
        title: title,
 | 
						|
        subtitle: subtitle,
 | 
						|
        content: content,
 | 
						|
        icon: icon,
 | 
						|
        timestamp: timestamp
 | 
						|
    };
 | 
						|
 | 
						|
    let log = getStorage("activitylog");
 | 
						|
    if (log == null) {
 | 
						|
        log = [];
 | 
						|
    } else {
 | 
						|
        try {
 | 
						|
            log = JSON.parse(log);
 | 
						|
        } catch (ex) {
 | 
						|
            log = [];
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    let pushed = false;
 | 
						|
    let datestr = formatTimestamp("Y-m-d", timestamp);
 | 
						|
    for (var i = 0; i < log.length; i++) {
 | 
						|
        if (formatTimestamp("Y-m-d", log[i].date) == datestr) {
 | 
						|
            log[i].entries.push(entry);
 | 
						|
            pushed = true;
 | 
						|
            break;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    if (!pushed) {
 | 
						|
        log.push({
 | 
						|
            date: timestamp,
 | 
						|
            entries: [
 | 
						|
                entry
 | 
						|
            ]
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    console.log("Added activity log entry", entry);
 | 
						|
    console.log(log);
 | 
						|
 | 
						|
    setStorage("activitylog", JSON.stringify(log));
 | 
						|
 | 
						|
    // Trim the log soon but don't block for it
 | 
						|
    setTimeout(trimActivityLog, 100);
 | 
						|
}
 | 
						|
 | 
						|
function clearActivityLog() {
 | 
						|
    setStorage("activitylog", "[]");
 | 
						|
}
 | 
						|
 | 
						|
function trimActivityLog() {
 | 
						|
    let log = JSON.parse(getStorage("activitylog"));
 | 
						|
 | 
						|
    log.sort(function (x, y) {
 | 
						|
        if (x.date < y.date) {
 | 
						|
            return 1;
 | 
						|
        } else if (x.date > y.date) {
 | 
						|
            return -1;
 | 
						|
        }
 | 
						|
        return 0;
 | 
						|
    });
 | 
						|
 | 
						|
    let entries = 0;
 | 
						|
    let allowed = SETTINGS.activitylog_maxlength;
 | 
						|
 | 
						|
    let newlog = [];
 | 
						|
 | 
						|
    for (var i = 0; i < log.length; i++) {
 | 
						|
        let logdate = {
 | 
						|
            date: log[i].date,
 | 
						|
            entries: []
 | 
						|
        };
 | 
						|
        for (var j = 0; j < log[i].entries.length; j++) {
 | 
						|
            if (entries < allowed) {
 | 
						|
                logdate.entries.push(log[i].entries[j]);
 | 
						|
            }
 | 
						|
            entries++;
 | 
						|
        }
 | 
						|
        if (logdate.entries.length > 0) {
 | 
						|
            newlog.push(logdate);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    if (entries - allowed > 0) {
 | 
						|
        newlog[newlog.length - 1].entries.push({
 | 
						|
            title: "Log Trimmed",
 | 
						|
            subtitle: "",
 | 
						|
            content: (entries - allowed) + " older " + ((entries - allowed) == 1 ? "entry was" : "entries were") + " removed from the log.",
 | 
						|
            icon: "fas fa-cut",
 | 
						|
            timestamp: newlog[newlog.length - 1].date
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    console.log(log);
 | 
						|
    console.log(newlog);
 | 
						|
    setStorage("activitylog", JSON.stringify(newlog));
 | 
						|
} |