do not download updates multiple times (#633)

This commit is contained in:
Bruce MacDonald 2023-09-28 15:29:17 -04:00 committed by GitHub
parent 5f4008c296
commit 24d82a23a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 40 deletions

View file

@ -5,7 +5,7 @@ import winston from 'winston'
import 'winston-daily-rotate-file' import 'winston-daily-rotate-file'
import * as path from 'path' import * as path from 'path'
import { analytics, id } from './telemetry' import { v4 as uuidv4 } from 'uuid'
import { installed } from './install' import { installed } from './install'
require('@electron/remote/main').initialize() require('@electron/remote/main').initialize()
@ -164,11 +164,11 @@ app.on('before-quit', () => {
function init() { function init() {
if (app.isPackaged) { if (app.isPackaged) {
heartbeat()
autoUpdater.checkForUpdates() autoUpdater.checkForUpdates()
setInterval(() => { setInterval(() => {
heartbeat() if (!updateAvailable) {
autoUpdater.checkForUpdates() autoUpdater.checkForUpdates()
}
}, 60 * 60 * 1000) }, 60 * 60 * 1000)
} }
@ -234,28 +234,26 @@ app.on('window-all-closed', () => {
} }
}) })
// In this file you can include the rest of your app's specific main process function id(): string {
// code. You can also put them in separate files and import them here. const id = store.get('id') as string
let aid = ''
try {
aid = id()
} catch (e) {}
autoUpdater.setFeedURL({ if (id) {
url: `https://ollama.ai/api/update?os=${process.platform}&arch=${process.arch}&version=${app.getVersion()}&id=${aid}`, return id
})
async function heartbeat() {
analytics.track({
anonymousId: aid,
event: 'heartbeat',
properties: {
version: app.getVersion(),
},
})
} }
const uuid = uuidv4()
store.set('id', uuid)
return uuid
}
autoUpdater.setFeedURL({
url: `https://ollama.ai/api/update?os=${process.platform}&arch=${
process.arch
}&version=${app.getVersion()}&id=${id()}`,
})
autoUpdater.on('error', e => { autoUpdater.on('error', e => {
logger.error(`update check failed - ${e.message}`)
console.error(`update check failed - ${e.message}`) console.error(`update check failed - ${e.message}`)
}) })

View file

@ -1,19 +0,0 @@
import { Analytics } from '@segment/analytics-node'
import { v4 as uuidv4 } from 'uuid'
import Store from 'electron-store'
const store = new Store()
export const analytics = new Analytics({ writeKey: process.env.TELEMETRY_WRITE_KEY || '<empty>' })
export function id(): string {
const id = store.get('id') as string
if (id) {
return id
}
const uuid = uuidv4()
store.set('id', uuid)
return uuid
}