From 1baa8ea3be377b98f784915c92e11ccc97d127bd Mon Sep 17 00:00:00 2001 From: MotorTruck1221 Date: Sun, 1 Oct 2023 22:51:02 -0600 Subject: [PATCH 1/2] Add codeowners file --- ' | 155 --------------------------------------------- .github/CODEOWNERS | 1 + 2 files changed, 1 insertion(+), 155 deletions(-) delete mode 100644 ' create mode 100644 .github/CODEOWNERS diff --git a/' b/' deleted file mode 100644 index 68d5bb84..00000000 --- a/' +++ /dev/null @@ -1,155 +0,0 @@ -localforage.config({ - driver : localforage.INDEXEDDB, - name : 'Ruby', - version : 1.0, - storeName : 'ruby_config', // Should be alphanumeric, with underscores. - description : 'Ruby Config for things in sw', -}); -function bare(value) { - if (!value.endsWith('/')) { value = value + '/'; } - if (!value.startsWith('http://') && !value.startsWith('https://') && value !== '/bare/' && value !== '/bare') { value = 'https://' + value; } - if ( value !== '/bare/' && value !== '/bare' ) { - fetch(value).then(function(response) { - if (response.status !== 200) { return false; } - bareChange(value) - localStorage.setItem('bare', value); - }).catch(function(err) { - console.log('Fetch Error :-S', err); - bareChange('/bare/'); - }); - } - else { - bareChange(value); - } -} -function setTitle(value) { - localStorage.setItem('title', value); - document.title = value; -} -function favicon(value) { - localStorage.setItem('favicon', value); - document.getElementById('favicon').href = value; -} -function theme(value) { - localStorage.setItem('theme', value); - document.documentElement.className = value; -} -function searchSettings(value) { - localStorage.setItem('searchEngine', value); -} -function proxyChange(value) { - const setValue = function() { - localStorage.setItem('proxy', value); - } - const defaultFUNC = function() { - setItems(); - } - if (value === 'dynamic') { - notifyBeta('Dynamic', setValue, defaultFUNC); - } - if (value === 'rammerhead') { - notifyWithConfirm('Rammerhead', 'is a server based proxy so it MAY run slower, as well as breaking the URL bar of the browser. Are you sure you want to use Rammerhead?', setValue, defaultFUNC); - } - else { - setValue(); - } -} -function aboutBlank() { - window.location.replace('https://google.com'); - const win = window.open(); - win.document.body.style.margin = '0'; - win.document.body.style.height = '100vh'; - const iframe = win.document.createElement('iframe'); - iframe.style.border = 'none'; - iframe.style.width = '100%'; - iframe.style.height = '100%'; - iframe.style.margin = '0'; - const url = window.location.href; - iframe.src = url; - win.document.body.appendChild(iframe); -} -function jsBLOB() { - const htmlContent = ` - - - - - - - - - - `; - - window.location.replace('https://google.com'); - const blob = new Blob([htmlContent], { type: 'text/html' }); - const blobURL = URL.createObjectURL(blob); - const newWindow = window.open(blobURL, '_blank'); -} -function promptCloaking() { - promptCloakingNotify(aboutBlank, jsBLOB); -} - -function fullScreenChange(value) { - localStorage.setItem('fullScreen', value); -} - -function setItems() { - let titleInput = document.getElementById('titleInput'); - let faviconInput = document.getElementById('faviconInput'); - let themeSelect = document.getElementById('themeSelect'); - let searchInput = document.getElementById('searchInput'); - let proxySelect = document.getElementById('proxySelect'); - let fullscreenSelect = document.getElementById('fullscreenSelect'); - let bareInput = document.getElementById('bareInput'); - let title = localStorage.getItem('title'); - let favicon = localStorage.getItem('favicon'); - let theme = localStorage.getItem('theme'); - let search = localStorage.getItem('searchEngine'); - let proxy = localStorage.getItem('proxy'); - let fullscreen = localStorage.getItem('fullScreen'); - let bare = localStorage.getItem('bare'); - titleInput.value = title; - faviconInput.value = favicon; - themeSelect.value = theme; - searchInput.value = search; - proxySelect.value = proxy; - fullscreenSelect.value = fullscreen; - if (bare === window.location.origin + '/bare/') { bareInput.value = '/bare/'; } else { bareInput.value = bare; } - document.documentElement.className = localStorage.getItem('theme'); - document.title = title; - document.getElementById('favicon').href = favicon; -} -function reset() { - localStorage.clear(); - bareChange(window.location.origin + '/bare/'); - setTitle('Ruby'); - favicon('/favicon.ico'); - theme('default'); - searchSettings('https://www.google.com/search?q=%s'); - proxyChange('uv'); - fullScreenChange('page'); - setItems(); -} - -function init() { - let init = localStorage.getItem('init'); - if (init === null || init === undefined || init === 'false') { - bareInit(); - localStorage.setItem('init', true); - localStorage.setItem('title', 'Ruby'); - localStorage.setItem('favicon', '/favicon.ico'); - localStorage.setItem('theme', 'default'); - localStorage.setItem('searchEngine', 'https://www.google.com/search?q=%s'); - localStorage.setItem('proxy', 'uv'); - localStorage.setItem('bare', window.location.origin + '/bare/'); - localStorage.setItem('fullScreen', 'page'); - setItems(); - } - else { - setItems(); - } -} -init(); diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..bf6e50e7 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @motortruck1221 From dad3e1ca7fd26e6bc602ff12ef9fe8ed3724bf7d Mon Sep 17 00:00:00 2001 From: MotorTruck1221 Date: Sun, 1 Oct 2023 23:29:34 -0600 Subject: [PATCH 2/2] Import/Export Settings is Now DONE! --- src/public/js/notify.js | 43 +++++++++++++++++++++++++ src/public/js/settings.js | 53 +++++++++++++++++++++++++++++++ src/views/components/settings.erb | 4 +++ 3 files changed, 100 insertions(+) diff --git a/src/public/js/notify.js b/src/public/js/notify.js index 371229ab..3bf6b395 100644 --- a/src/public/js/notify.js +++ b/src/public/js/notify.js @@ -121,3 +121,46 @@ function promptCloakingNotify(defaulFunc, secFunc) { } }) } + +function settingsImportExportChoice(exportFunc, importFunc) { + Swal.fire({ + title: 'Import/Export', + text: `Select Between the two options`, + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + color: 'var(--text-color)', + background: 'var(--bg-color)', + confirmButtonText: 'Export', + cancelButtonText: 'Import', + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + title: 'Export', + text: `Exporting settings...`, + icon: 'success', + color: 'var(--text-color)', + background: 'var(--bg-color)', + }).then(() => { + exportFunc(); + }) + } + else { + Swal.fire({ + title: 'Import', + text: 'Importing settings...', + color: 'var(--text-color)', + background: 'var(--bg-color)', + icon: 'success', + }).then(() => { + try { + importFunc(); + } + catch { + console.log('No default function found'); + } + }) + } + }) +} diff --git a/src/public/js/settings.js b/src/public/js/settings.js index 68d5bb84..48b4e259 100644 --- a/src/public/js/settings.js +++ b/src/public/js/settings.js @@ -133,6 +133,59 @@ function reset() { fullScreenChange('page'); setItems(); } +function exportSettings() { + let title = localStorage.getItem('title'); + let favicon = localStorage.getItem('favicon'); + let theme = localStorage.getItem('theme'); + let search = localStorage.getItem('searchEngine'); + let proxy = localStorage.getItem('proxy'); + let fullscreen = localStorage.getItem('fullScreen'); + let bare = localStorage.getItem('bare'); + let settings = { + title: title, + favicon: favicon, + theme: theme, + search: search, + proxy: proxy, + fullscreen: fullscreen, + bare: bare + } + let a = document.createElement('a'); + let file = new Blob([JSON.stringify(settings)], { type: 'text/plain' }); + let url = URL.createObjectURL(file); + a.href = url; + a.download = 'ruby_settings.json'; + a.click(); + URL.revokeObjectURL(url); + a.remove(); +} +function importSettings() { + let input = document.createElement('input'); + input.type = 'file'; + input.accept = '.json'; + input.onchange = function() { + let file = input.files[0]; + let reader = new FileReader(); + reader.readAsText(file); + reader.onload = function() { + let settings = JSON.parse(reader.result); + localStorage.setItem('title', settings.title); + localStorage.setItem('favicon', settings.favicon); + localStorage.setItem('theme', settings.theme); + localStorage.setItem('searchEngine', settings.search); + localStorage.setItem('proxy', settings.proxy); + localStorage.setItem('fullScreen', settings.fullscreen); + localStorage.setItem('bare', settings.bare); + setItems(); + console.log('Imported settings'); + window.location.reload(); + } + } + input.click(); +} +function importExportSettings() { + settingsImportExportChoice(exportSettings, importSettings); +} function init() { let init = localStorage.getItem('init'); diff --git a/src/views/components/settings.erb b/src/views/components/settings.erb index 9d09e54a..1373d039 100644 --- a/src/views/components/settings.erb +++ b/src/views/components/settings.erb @@ -94,5 +94,9 @@

Reset Settings

+
+

Import/Export Settings

+ +