feat: add looping and manual update check, and update detection notification

This commit is contained in:
ThaUnknown 2022-06-10 02:53:35 +02:00
parent 08661ed8c3
commit a6c48c0c37
5 changed files with 53 additions and 17 deletions

View file

@ -1,6 +1,6 @@
{
"name": "Miru",
"version": "2.6.0",
"version": "2.6.1",
"author": "ThaUnknown_ <ThaUnknown@users.noreply.github.com>",
"main": "src/index.js",
"homepage": "https://github.com/ThaUnknown/miru#readme",

View file

@ -1,7 +1,5 @@
const { app, BrowserWindow, protocol, shell, ipcMain } = require('electron')
const path = require('path')
const log = require('electron-log')
const { autoUpdater } = require('electron-updater')
require('./main/misc.js')
if (process.defaultApp) {
@ -45,8 +43,6 @@ ipcMain.on('open', (event, url) => {
shell.openExternal(url)
})
autoUpdater.logger = log
autoUpdater.logger.transports.file.level = 'info'
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
@ -67,8 +63,6 @@ function UpsertKeyValue (obj, keyToChange, value) {
}
function createWindow () {
autoUpdater.checkForUpdatesAndNotify()
// Create the browser window.
mainWindow = new BrowserWindow({
width: 1600,

View file

@ -1,5 +1,7 @@
const { dialog, ipcMain, BrowserWindow, app } = require('electron')
const { Client } = require('discord-rpc')
const log = require('electron-log')
const { autoUpdater } = require('electron-updater')
ipcMain.on('dialog', async (event, data) => {
const { filePaths } = await dialog.showOpenDialog({
@ -47,7 +49,7 @@ discord.on('ready', () => {
})
function loginRPC () {
discord.login({ clientId: '954855428355915797' }).catch(() => {
setTimeout(loginRPC, 5000)
setTimeout(loginRPC, 5000).unref()
})
}
loginRPC()
@ -55,3 +57,14 @@ loginRPC()
ipcMain.on('version', (event) => {
event.sender.send('version', app.getVersion()) // fucking stupid
})
autoUpdater.logger = log
autoUpdater.logger.transports.file.level = 'info'
ipcMain.on('update', () => {
autoUpdater.checkForUpdatesAndNotify()
})
autoUpdater.checkForUpdatesAndNotify()
autoUpdater.on('update-available', () => {
BrowserWindow.getAllWindows()[0]?.send('update', true)
})

View file

@ -17,7 +17,7 @@
setContext('view', view)
let sidebar = writable(true)
const sidebar = writable(true)
setContext('sidebar', sidebar)
setContext('gallery', writable(null))

View file

@ -1,4 +1,5 @@
<script context="module">
import { addToast } from '@/lib/Toasts.svelte'
export let alToken = localStorage.getItem('ALtoken') || null
const defaults = {
playerAutoplay: true,
@ -30,7 +31,7 @@
}
})
window.IPC.on('altoken', handleToken)
function handleToken(data) {
function handleToken (data) {
localStorage.setItem('ALtoken', data)
alToken = data
location.reload()
@ -47,6 +48,17 @@
let version = '1.0.0'
window.IPC.on('version', data => (version = data))
window.IPC.emit('version')
window.IPC.on('update', () => {
addToast({
title: 'Auto Updater',
text: 'A new version of Miru is available. Downloading!'
})
})
function checkUpdate () {
window.IPC.emit('update')
}
setInterval(checkUpdate, 1200000)
</script>
<script>
@ -76,14 +88,14 @@
}
let settings = set
$: saveSettings(settings)
function saveSettings() {
function saveSettings () {
localStorage.setItem('settings', JSON.stringify(settings))
}
function restoreSettings() {
function restoreSettings () {
localStorage.removeItem('settings')
settings = { ...defaults }
}
function handleFolder() {
function handleFolder () {
window.IPC.emit('dialog')
}
window.IPC.on('path', data => {
@ -106,18 +118,35 @@
</div>
</TabLabel>
{/each}
<p class="text-muted px-20 py-10 m-0 mt-auto">Restart may be required for some settings to take effect.</p>
<p class="text-muted px-20 m-0">If you don't know what shit does, use default settings.</p>
<button
on:click={() => window.IPC.emit('open', 'https://ko-fi.com/thaunknown_')}
class="btn btn-secondary mx-20 mt-auto"
type="button"
data-toggle="tooltip"
data-placement="top"
data-title="Opens The Donate Site">
Donate
</button>
<button
on:click={checkUpdate}
class="btn btn-primary mx-20 mt-10"
type="button"
data-toggle="tooltip"
data-placement="top"
data-title="Checks For Available Updates And Notifies The User">
Check For Updates
</button>
<button
on:click={restoreSettings}
class="btn btn-danger mx-20 my-10"
class="btn btn-danger mx-20 mt-10"
type="button"
id="setRes"
data-toggle="tooltip"
data-placement="top"
data-title="Restores All Settings Back To Their Recommended Defaults">
Restore Defaults
</button>
<p class="text-muted px-20 py-10 m-0">Restart may be required for some settings to take effect.</p>
<p class="text-muted px-20 pb-10 m-0">If you don't know what shit does, use default settings.</p>
<p class="text-muted px-20 m-0 mb-20">v{version} {platformMap[window.version.platform]} {window.version.arch}</p>
</div>
<div class="h-full p-20 m-20">