Skip to content

Commit

Permalink
add two new options to settings - development mode and restore session
Browse files Browse the repository at this point in the history
  • Loading branch information
blurymind committed Jul 23, 2024
1 parent 483b2d0 commit 2462ad2
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 51 deletions.
9 changes: 9 additions & 0 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,10 @@ <h3>Settings</h3>
<button data-bind="click: function () { window.open('https://gist.github.com/','_blank','resizable=yes') }">New</button>
</div> <!-- settgins-item -->

<div class="settings-item">
<label class="settings-label" for="developmentMode"><svg class="icon icon-sweat-emoji icon-fw icon-lg icon-sweat-emoji"><use xlink:href="public/icons.svg#icon-sweat-emoji"></use></svg> Development mode</label>
<input id="developmentMode" type="checkbox" checked="true" data-bind="checked: app.settings.developmentModeEnabled">
</div>

</div> <!-- settgins-column -->
<div class="settings-column" id="settingsColumnB">
Expand Down Expand Up @@ -597,6 +601,11 @@ <h3>Settings</h3>
<button data-bind="click: function () { window.open('https://gist.github.com/2ff124dc94f936e8f7d96632f559aecb','_blank','resizable=yes') }">Examples</button>
</div> <!-- settgins-item -->

<div class="settings-item">
<label class="settings-label" for="restoreSession"><svg class="icon icon-save icon-fw icon-lg settings-icon"><use xlink:href="public/icons.svg#icon-save"></use></svg> Restore previous session</label>
<input id="restoreSession" type="checkbox" checked="true" data-bind="checked: app.settings.restoreSessionEnabled">
</div>

</div> <!-- settgins-column -->
</div> <!-- settgins-row -->
</div> <!-- settgins-form -->
Expand Down
18 changes: 12 additions & 6 deletions src/js/classes/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,16 @@ export var App = function(name, version) {
window.parent.dispatchEvent(event);
};

this.log = function(message){
if(self.settings.developmentModeEnabled()){
console.log(message)
}
};

this.setDocumentType = function(documentType, e) {
const documentTypeId = e ? e.target.value : documentType;
self.settings.documentType(documentTypeId);
console.log('Set doc type', documentType, app.data.inkCompiler);
self.log('Set doc type', documentType, app.data.inkCompiler);
if (documentTypeId === 'ink') {
if (app.data.inkCompiler === null)
app.data.inkCompiler = new app.data.InkCompiler();
Expand Down Expand Up @@ -86,7 +92,7 @@ export var App = function(name, version) {
};

this.setGistCredentials = function(gist, e) {
console.log("SET CREDENTIALS")
self.log("SET CREDENTIALS")
const { token, file } = gist;
data.storage.setCredentials(token, file);
};
Expand Down Expand Up @@ -206,7 +212,7 @@ export var App = function(name, version) {
let deferredPrompt;
const addBtn = $('#addPwa')[0];
addBtn.style.display = 'none';
// addBtn.addEventListener('click', (e) => {console.log(e)});
// addBtn.addEventListener('click', (e) => {self.log(e)});
window.addEventListener('beforeinstallprompt', e => {
// Prevent Chrome 67 and earlier from automatically showing the prompt
e.preventDefault();
Expand All @@ -221,10 +227,10 @@ export var App = function(name, version) {
// Wait for the user to respond to the prompt
deferredPrompt.userChoice.then(choiceResult => {
if (choiceResult.outcome === 'accepted') {
console.log('User accepted the A2HS prompt');
self.log('User accepted the A2HS prompt');
addBtn.style.display = 'none';
} else {
console.log('User dismissed the A2HS prompt');
self.log('User dismissed the A2HS prompt');
}
deferredPrompt = null;
});
Expand Down Expand Up @@ -847,7 +853,7 @@ export var App = function(name, version) {
}),
'Node Link'
);
// console.log(langTools);
// self.log(langTools);
langTools.setCompleters([
nodeLinksCompleter,
langTools.keyWordCompleter,
Expand Down
61 changes: 30 additions & 31 deletions src/js/classes/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ export const data = {
db: DBStorage('yarn-DB', 'Yarn-persistence'),
storage: StorageJs("gist"),
appInstanceStates: ko.observable([]),
restoreFromLocalStorage: ko.observable(true),
// All the bellow go into appInstanceStates, which controls r/w of app states to local storage (for file tabs feature)
isDocumentDirty: ko.observable(false),
editingPath: ko.observable(null),
Expand Down Expand Up @@ -87,7 +86,7 @@ export const data = {
});
},
loadDocumentStateTabFromIndex: function(index) {
console.log('ATTEMPT TO LOAD STATE', index);
app.log('ATTEMPT TO LOAD STATE', index);
app.settings.selectedFileTab(index);
data.loadAppStateFromLocalStorage();
},
Expand Down Expand Up @@ -125,7 +124,7 @@ export const data = {
reverseButtons: true,
}).then(result => {
if (result.value) {
console.log('DELETE TAB', data.appInstanceStates(), index);
app.log('DELETE TAB', data.appInstanceStates(), index);
const mutatedState = data
.appInstanceStates()
.filter((_, i) => i !== index)
Expand All @@ -140,7 +139,7 @@ export const data = {
: index;
data.loadDocumentStateTabFromIndex(nextIndex);
}, 500);
console.log(
app.log(
data.appInstanceStates(),
'resulting mutation',
mutatedState
Expand All @@ -154,7 +153,7 @@ export const data = {
...data.appInstanceStates(),
{ ...data.getCurrentAppState() }, //this is pretty slow
]);
console.log('DOCUMENT TAB ADDED', data.appInstanceStates());
app.log('DOCUMENT TAB ADDED', data.appInstanceStates());
data.saveAppStateToLocalStorage();
data.loadDocumentStateTabFromIndex(data.appInstanceStates().length - 1);
if (checked) {
Expand All @@ -164,7 +163,7 @@ export const data = {
data.startNewFile(editingName, editingType);
}

console.log({ editingName, yarnData, editingType, checked });
app.log({ editingName, yarnData, editingType, checked });
},
addDocumentStateTab: function() {
data.promptFileNameAndFormat(
Expand All @@ -175,13 +174,13 @@ export const data = {
);
},
saveAppStateToLocalStorage: Utils.debounce(function(writeCurrent = true) {
if (!data.restoreFromLocalStorage()) return;
if (!app.settings.restoreSessionEnabled()) return;

const storage = app.settings.storage;
data.isDocumentDirty(true);
data.lastEditedUnix(new Date());
app.refreshWindowTitle();
// console.log('Update storage', data.appInstanceStates(), writeCurrent);
// app.log('Update storage', data.appInstanceStates(), writeCurrent);
const updatedStates = [...data.appInstanceStates()];
if (writeCurrent)
updatedStates[app.settings.selectedFileTab()] = data.getCurrentAppState();
Expand All @@ -191,12 +190,10 @@ export const data = {
app.ui.dispatchEvent('yarnSavedStateToLocalStorage');
}, 700),
loadAppStateFromLocalStorage: async function() {
if (!data.restoreFromLocalStorage()) return; // to ignore sometimes?

const storage = app.settings.storage;
// Just in case clear old state's cache
if (storage.getItem('appState')) {
console.log('--- storage.clear() ---');
app.log('--- storage.clear() ---');
storage.clear(); //TODO remove later
}

Expand All @@ -206,7 +203,7 @@ export const data = {

const currentDocState = appStates[app.settings.selectedFileTab()];
data.appInstanceStates(appStates);
console.log('APP state', appStates, currentDocState);
app.log('APP state', appStates, currentDocState);
if (currentDocState) {
const {
editingPath,
Expand All @@ -226,6 +223,10 @@ export const data = {
lastEditedUnix,
lastSavedUnix,
} = currentDocState;
app.pluginStorage = pluginStorage;

if (!app.settings.restoreSessionEnabled()) return; // to ignore sometimes?

app.tags(tags);
data.editingPath(editingPath);
data.editingName(editingName);
Expand All @@ -239,21 +240,19 @@ export const data = {
data.isDocumentDirty(true);
app.refreshWindowTitle();
app.ui.dispatchEvent('yarnLoadedStateFromLocalStorage');
console.log('--- app.plugins.pluginStorage ---');
app.plugins.pluginStorage = pluginStorage;

app.log('--- app.plugins.pluginStorage ---');
data.getNodesFromObjectsAsync(nodes).then(newNodes => {
if (editingTitle) {
app.editNode(newNodes.find(node => node.title() === editingTitle));
if (editorSelection) app.editor.selection.setRange(editorSelection);
}
console.log('--- app.nodes(newNodes) ---', newNodes.length);
app.log('--- app.nodes(newNodes) ---', newNodes.length);
app.nodes(newNodes);
console.log('--- app.updateNodeLinks ---');
app.log('--- app.updateNodeLinks ---');
app.updateNodeLinks();
console.log('--- app.workspace.setTranslation ---');
app.log('--- app.workspace.setTranslation ---');
app.workspace.setTranslation(transform.x, transform.y);
console.log('--- app.workspace.setZoom ---');
app.log('--- app.workspace.setZoom ---');
app.workspace.setZoom(scale * 4);
});
}
Expand All @@ -267,7 +266,7 @@ export const data = {
},

setNewFileStats: function(fileName, filePath, lastStorageHost = 'LOCAL') {
console.log('Updated save data', fileName, filePath);
app.log('Updated save data', fileName, filePath);
data.editingName(fileName.replace(/^.*[\\\/]/, ''));
data.isDocumentDirty(false);
data.editingPath(filePath);
Expand Down Expand Up @@ -362,7 +361,7 @@ export const data = {
restoreSettingsFromDocumentHeader: function() {
if (data.documentHeader() !== null) {
const documentHeader = data.documentHeader();
console.log('Apply settings from file header:', documentHeader);
app.log('Apply settings from file header:', documentHeader);
if ('markupLanguage' in documentHeader)
app.settings.markupLanguage(documentHeader.markupLanguage);
if ('language' in documentHeader)
Expand All @@ -380,7 +379,7 @@ export const data = {
}
};

console.log('OPENING::', { content });
app.log('OPENING::', { content });
// different depending on file
if (type === FILETYPE.JSON) {
content = JSON.parse(content); // todo this can fail, show error
Expand Down Expand Up @@ -410,7 +409,7 @@ export const data = {
);
obj.position = { x: parseInt(x), y: parseInt(y) };
obj.colorID = colorID;
// console.log('OBJECT', obj);
// app.log('OBJECT', obj);
} catch (e) {
console.warn('node metadata failed parse: ', e);
}
Expand Down Expand Up @@ -657,7 +656,7 @@ export const data = {
if (type === FILETYPE.JSON) {
// store useful values for later use if the file type supports it
if (app.settings.filetypeVersion() === '2') {
console.log('Saving as Yarn json v2 type');
app.log('Saving as Yarn json v2 type');
const date = new Date();
data.documentHeader({
...data.documentHeader(),
Expand Down Expand Up @@ -777,7 +776,7 @@ export const data = {
);
reject();
} else {
console.log('Warnings', response.warnings);
app.log('Warnings', response.warnings);

app.ui.toastMixin.fire({
animation: true,
Expand All @@ -788,7 +787,7 @@ export const data = {
icon: response.warnings.length > 0 ? 'warning' : 'success',
text: response.warnings.join('\n'),
});
console.log({ responseStory: response.story });
app.log({ responseStory: response.story });
resolve(JSON.stringify(response.story, null, '\t'));
}
})
Expand Down Expand Up @@ -888,7 +887,7 @@ export const data = {
isIfElse = false;
} else if (trimmedLine.startsWith('<<set')) {
const set = trimmedLine.replace(/[\<\>\$]|set /g, '').split('=');
console.log({ set });
app.log({ set });
parsedBodyContent +=
set.length > 1
? `${tabs}$ ${set[0].trim()} = ${set[1].trim()}\n`
Expand Down Expand Up @@ -1050,8 +1049,8 @@ export const data = {
text: yarnData,
file: [file],
})
.then(() => console.log('Successful share'))
.catch(error => console.log('Error sharing', error));
.then(() => app.log('Successful share'))
.catch(error => app.log('Error sharing', error));
} else {
Swal.fire({
title:
Expand All @@ -1066,7 +1065,7 @@ export const data = {
if (data.storage.hasGistSettings()) {
data.storage.getGistFile().then(gist => {
const gistFiles = Object.keys(gist.body.files);
console.log(gistFiles);
app.log(gistFiles);
data.promptFileNameAndFormat(({ editingName, yarnData }) => {
data.editingName(editingName);
data.storage.editGist(gists.file, editingName, yarnData);
Expand Down Expand Up @@ -1202,7 +1201,7 @@ export const data = {
})
.catch(err => {
app.clipboard = app.editor.getSelectedText();
console.log('No clipboard access', err, 'using local instead');
app.log('No clipboard access', err, 'using local instead');
});
}
// execCommand("paste") will not work on web browsers, due to security
Expand Down
2 changes: 1 addition & 1 deletion src/js/classes/richTextFormatter.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const RichTextFormatter = function(app) {
/((?:https?:\/\/)?(?:www.)?instagram.com\/p\/([^\s\<]+)\/)/i
);
if (extractedId.length > 2) {
console.log('EXTRACTED', extractedId);
app.log('EXTRACTED', extractedId);
return `
<iframe height="540" src="http://instagram.com/p/${extractedId[2]}/embed" frameborder="0"></iframe>
`;
Expand Down
18 changes: 17 additions & 1 deletion src/js/classes/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const Settings = function(app) {
.readText()
.then(
(clipText) => {
console.log("clipboard", clipText)
app.log("clipboard", clipText)
if(clipText && clipText.length > 5) koItem(clipText)
},
);
Expand Down Expand Up @@ -173,6 +173,22 @@ export const Settings = function(app) {
)
.extend({ persist: 'snapGridEnabled' });

this.restoreSessionEnabled = ko
.observable(
storage.getItem('restoreSessionEnabled') !== null
? storage.getItem('restoreSessionEnabled') === 'true'
: false
)
.extend({ persist: 'restoreSessionEnabled' });

this.developmentModeEnabled = ko
.observable(
storage.getItem('developmentModeEnabled') !== null
? storage.getItem('developmentModeEnabled') === 'true'
: false
)
.extend({ persist: 'developmentModeEnabled' });

// Grid size
this.gridSize = ko
.observable(parseInt(storage.getItem('gridSize') || '40'))
Expand Down
4 changes: 2 additions & 2 deletions src/js/classes/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export const UI = function(app) {
event.options = options;
window.dispatchEvent(event);
window.parent.dispatchEvent(event);
// console.log('Dispatched event', eventName, event);
// app.log('Dispatched event', eventName, event);
};

this.settingsDialogVisible = ko.observable(false);
Expand Down Expand Up @@ -420,7 +420,7 @@ export const UI = function(app) {
if (typeof param.default === 'boolean') {
$(`#swal-input${i}`)[0].checked = param.default;
} else $(`#swal-input${i}`)[0].value = param.default;
console.log($(`#swal-input${i}`));
app.log($(`#swal-input${i}`));
});
},
}).then(function(result) {
Expand Down
2 changes: 1 addition & 1 deletion src/public/mode-ink.js
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ define('ace/mode/ink', [
/// set context menu
$.contextMenu(app.utils.getEditorContextMenu(/->/g));

console.log('ink', InkMode);
app.log('ink', InkMode);
app.editor.setOptions({
enableBasicAutocompletion: app.settings.autocompleteSuggestionsEnabled(),
enableLiveAutocompletion: app.settings.autocompleteSuggestionsEnabled(),
Expand Down
Loading

0 comments on commit 2462ad2

Please sign in to comment.