-
Notifications
You must be signed in to change notification settings - Fork 0
/
userData.js
76 lines (66 loc) · 1.92 KB
/
userData.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const path = require('path')
const fs = require('fs')
const fx = require('mkdir-recursive')
const log = require('electron-log')
const url = require('url');
// UserData is the representation of user's saved datas
class UserData {
constructor () {
this.team = undefined
}
static defaultSaveToFileCallback (err) {
if (err) {
log.error('UserData', err)
}
}
// saveToFile saves this UserData instance to a file as a json
// if the file already exist it will be truncated
saveToFile (filePath, callback = UserData.defaultSaveToFileCallback) {
let usString = JSON.stringify(this)
let fp = path.parse(filePath)
fx.mkdir(fp.dir, (err) => {
if (err) {
callback(new Error('Cannot create user\'s data directory: ' + err))
return
}
fs.writeFile(filePath, usString, {
mode: fs.constants.S_IRWXU | fs.constants.S_IRWXG
}, (err) => {
if (err) {
callback(new Error('Cannot file user\'s data file: ' + err))
return
}
callback(undefined)
})
})
}
// loadFromfile loads an UserData structure from a json file
static loadFromfile (filePath) {
let userData = new UserData()
try {
let fileData = fs.readFileSync(filePath, {encoding: 'utf8', flag: 'r'})
let tmpuserData = JSON.parse(fileData.toString())
Object.assign(userData, tmpuserData)
} catch (e) {
log.error('UserData', 'Cannot load user\'s datas from file: ' + e)
return undefined
}
return userData
}
updateTeamFromUrl (urlArg) {
if (typeof urlArg === typeof '') {
urlArg = url.parse(urlArg)
}
let regex = new RegExp(/^(.+)\.riminder\.net$/)
if (!regex.test(urlArg.hostname)) {
return undefined
}
let newTeam = RegExp.$1
if (newTeam !== 'www' && newTeam !== this.team) {
this.team = newTeam
return this.team
}
return undefined
}
}
module.exports = UserData