|
|
|
function getCurrentTimestamp() { |
|
const now = new Date(); |
|
const timezoneOffset = now.getTimezoneOffset() * 60000; |
|
const localTime = new Date(now.getTime() - timezoneOffset); |
|
const formattedTimestamp = localTime.toISOString().replace(/[-:]/g, '').slice(0, 15); |
|
return formattedTimestamp; |
|
} |
|
|
|
function saveFile(contents, filename) { |
|
const element = document.createElement('a'); |
|
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(contents)); |
|
element.setAttribute('download', filename); |
|
element.style.display = 'none'; |
|
document.body.appendChild(element); |
|
element.click(); |
|
document.body.removeChild(element); |
|
} |
|
|
|
function saveHistory(history, character, mode) { |
|
let path = null; |
|
|
|
if (['chat', 'chat-instruct'].includes(mode) && character && character.trim() !== '') { |
|
path = `history_${character}_${getCurrentTimestamp()}.json`; |
|
} else { |
|
try { |
|
path = `history_${mode}_${getCurrentTimestamp()}.json`; |
|
} catch (error) { |
|
path = `history_${getCurrentTimestamp()}.json`; |
|
} |
|
} |
|
saveFile(history, path); |
|
} |
|
|
|
function saveSession(session) { |
|
let path = null; |
|
|
|
path = `session_${getCurrentTimestamp()}.json`; |
|
saveFile(session, path); |
|
} |
|
|