123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- const events = require('events')
- const path = require('path')
- const fs = require('fs')
- const { app } = require('electron')
- // const LiveMeAPI = require('liveme-api')
- let bookmarks = []
- let profiles = []
- let downloaded = []
- let watched = []
- let errored = []
- let queued = []
- let isBusy = false
- let canWrite = true
- class DataManager {
- constructor () {
- this.events = new (events.EventEmitter)()
- }
- disableWrites () {
- canWrite = false
- }
- enableWrites () {
- canWrite = true
- }
- wipeAllData () {
- bookmarks = []
- profiles = []
- downloaded = []
- watched = []
- errored = []
- queued = []
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'bookmarks.json'), '[]', () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'profiles.json'), '[]', () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'downloaded.json'), '[]', () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'watched.json'), '[]', () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'errored.json'), '[]', () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'queued.json'), '[]', () => { })
- }
- getStats () {
- return {
- bookmarks: bookmarks.length,
- profiles: profiles.length,
- downloaded: downloaded.length,
- watched: watched.length
- }
- }
- loadFromDisk () {
- if (fs.existsSync(path.join(app.getPath('appData'), app.getName(), 'bookmarks.json'))) {
- fs.readFile(path.join(app.getPath('appData'), app.getName(), 'bookmarks.json'), 'utf8', function (err, data) {
- if (err) {
- bookmarks = []
- } else {
- bookmarks = JSON.parse(data)
- if (bookmarks[0].counts.changed == undefined) {
- // Upgrade to new format
- for (var i = 0; i < bookmarks.length; i++)
- bookmarks[i].counts = {
- replays: bookmarks[i].counts.replays,
- friends: bookmarks[i].counts.friends,
- followers: bookmarks[i].counts.followers,
- followings: bookmarks[i].counts.followings,
- changed: false
- }
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'bookmarks.json'), JSON.stringify(bookmarks, null, 2), () => { })
- }
- }
- })
- }
- if (fs.existsSync(path.join(app.getPath('appData'), app.getName(), 'profiles.json'))) {
- fs.readFile(path.join(app.getPath('appData'), app.getName(), 'profiles.json'), 'utf8', function (err, data) {
- if (err) {
- profiles = []
- } else {
- profiles = JSON.parse(data)
- }
- })
- }
- if (fs.existsSync(path.join(app.getPath('appData'), app.getName(), 'downloaded.json'))) {
- fs.readFile(path.join(app.getPath('appData'), app.getName(), 'downloaded.json'), 'utf8', function (err, data) {
- if (err) {
- downloaded = []
- } else {
- downloaded = JSON.parse(data)
- }
- })
- }
- if (fs.existsSync(path.join(app.getPath('appData'), app.getName(), 'watched.json'))) {
- fs.readFile(path.join(app.getPath('appData'), app.getName(), 'watched.json'), 'utf8', function (err, data) {
- if (err) {
- watched = []
- } else {
- watched = JSON.parse(data)
- }
- })
- }
- if (fs.existsSync(path.join(app.getPath('appData'), app.getName(), 'errored.json'))) {
- fs.readFile(path.join(app.getPath('appData'), app.getName(), 'errored.json'), 'utf8', function (err, data) {
- if (err) {
- errored = []
- } else {
- errored = JSON.parse(data)
- }
- })
- }
- if (fs.existsSync(path.join(app.getPath('appData'), app.getName(), 'queued.json'))) {
- fs.readFile(path.join(app.getPath('appData'), app.getName(), 'queued.json'), 'utf8', function (err, data) {
- if (err) {
- queued = []
- } else {
- queued = JSON.parse(data)
- }
- })
- }
- }
- saveToDisk () {
- if (isBusy === true) return
- if (canWrite === false) return
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'bookmarks.json'), JSON.stringify(bookmarks, null, 2), () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'profiles.json'), JSON.stringify(profiles), () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'downloaded.json'), JSON.stringify(downloaded), () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'watched.json'), JSON.stringify(watched), () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'errored.json'), JSON.stringify(errored), () => { })
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'queued.json'), JSON.stringify(queued), () => { })
- }
- /**
- * Track Downloaded Replays
- */
- addDownloaded (vidid) {
- isBusy = true
- let add = true
- let dt = new Date()
- for (var i = 0; i < downloaded.length; i++) {
- if (downloaded[i].videoid === vidid) {
- downloaded[i].dt = Math.floor(dt.getTime() / 1000)
- add = false
- }
- }
- if (add) {
- downloaded.push({
- dt: Math.floor(dt.getTime() / 1000),
- videoid: vidid
- })
- }
- isBusy = false
- }
- wasDownloaded (vidid) {
- var ret = false
- for (var i = 0; i < downloaded.length; i++) {
- if (downloaded[i].videoid === vidid) ret = new Date(downloaded[i].dt * 1000)
- }
- return ret
- }
- /**
- * Track Watched Replays
- */
- addWatched (vidid) {
- isBusy = true
- let add = true
- let dt = new Date()
- for (var i = 0; i < watched.length; i++) {
- if (watched[i].videoid === vidid) {
- watched[i].dt = Math.floor(dt.getTime() / 1000)
- add = false
- }
- }
- if (add) {
- watched.push({
- dt: Math.floor(dt.getTime() / 1000),
- videoid: vidid
- })
- }
- isBusy = false
- }
- wasWatched (vidid) {
- var ret = false
- for (var i = 0; i < watched.length; i++) {
- if (watched[i].videoid === vidid) ret = new Date(watched[i].dt * 1000)
- }
- return ret
- }
- dropWatched (oldestDate, dryRun) {
- if (dryRun == null) dryRun = false
- let ret = 0
- let temp = []
- for (var i = 0; i < watched.length; i++) {
- if (watched[i].dt > oldestDate) {
- temp.push(watched[i])
- ret++
- }
- }
- if (!dryRun) {
- watched = temp
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'watched.json'), JSON.stringify(watched), () => { })
- }
- return ret
- }
- /**
- * Track Viewed Profiles
- */
- addViewed (userid) {
- isBusy = true
- let add = true
- let dt = new Date()
- for (var i = 0; i < profiles.length; i++) {
- if (profiles[i].userid === userid) {
- profiles[i].dt = Math.floor(dt.getTime() / 1000)
- add = false
- }
- }
- if (add) {
- profiles.push({
- dt: Math.floor(dt.getTime() / 1000),
- userid: userid
- })
- }
- isBusy = false
- }
- wasProfileViewed (userid) {
- let ret = false
- for (var i = 0; i < profiles.length; i++) {
- if (profiles[i].userid === userid) ret = new Date(profiles[i].dt * 1000)
- }
- return ret
- }
- unviewProfiles (oldestDate, dryRun) {
- if (dryRun == null) dryRun = false
- let ret = 0
- let temp = []
- for (let i = 0; i < profiles.length; i++) {
- if (profiles[i].dt > oldestDate) {
- temp.push(profiles[i])
- ret++
- }
- }
- if (!dryRun) {
- profiles = temp
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'profiles.json'), JSON.stringify(profiles), () => { })
- }
- return ret
- }
- /**
- * Account Bookmarks
- */
- addBookmark (user) {
- isBusy = true
- let add = true
- for (let i = 0; i < bookmarks.length; i++) {
- if (bookmarks[i].uid === user.uid) add = false
- }
- if (add === true) {
- bookmarks.push(user)
- }
- isBusy = false
- }
- removeBookmark (user) {
- isBusy = true
- for (let i = 0; i < bookmarks.length; i++) {
- if (bookmarks[i].uid === user.uid) {
- bookmarks.splice(i, 1)
- }
- }
- isBusy = false
- }
- updateBookmark (user) {
- isBusy = true
- // let add = true
- for (let i = 0; i < bookmarks.length; i++) {
- if (bookmarks[i].uid === user.uid) {
- bookmarks[i] = user
- break
- }
- }
- isBusy = false
- }
- isBookmarked (user) {
- let ret = false
- for (let i = 0; i < bookmarks.length; i++) {
- if (bookmarks[i].uid === user.uid) {
- ret = true
- break
- }
- }
- return ret
- }
- getAllBookmarks () { return bookmarks }
- getSingleBookmark (userid) {
- let ret = false
- for (let i = 0; i < bookmarks.length; i++) {
- if (bookmarks[i].uid === userid) {
- ret = bookmarks[i]
- break
- }
- }
- return ret
- }
- /**
- * Queued
- */
- addToQueueList (vid) {
- isBusy = true
- let add = true
- for (let i = 0; i < queued.length; i++) {
- if (queued[i] === vid) add = false
- }
- if (add === true) {
- queued.push(vid)
- }
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'queued.json'), JSON.stringify(queued), () => { })
- isBusy = false
- }
- removeFromQueueList (vid) {
- isBusy = true
- for (let i = 0; i < queued.length; i++) {
- if (queued[i] === vid) {
- queued.splice(i, 1)
- }
- }
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'queued.json'), JSON.stringify(queued), () => { })
- isBusy = false
- }
- /**
- * Queued
- */
- addToErroredList (vid) {
- isBusy = true
- let add = true
- for (let i = 0; i < errored.length; i++) {
- if (errored[i] === vid) add = false
- }
- if (add === true) {
- errored.push(vid)
- }
- fs.writeFile(path.join(app.getPath('appData'), app.getName(), 'errored.json'), JSON.stringify(errored), () => { })
- isBusy = false
- }
- }
- exports.DataManager = DataManager
|