-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdats.js
85 lines (70 loc) · 1.71 KB
/
dats.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
77
78
79
80
81
82
83
84
85
var Dat = require('dat-node');
const JP = require('path').join;
window.Dats = {
dir: JP(require('os').homedir(), 'dats'),
search: dir => {
},
loadDir: function(dir){
dir = dir || Dats.dir;
if(FS.existsSync(dir)){
var dirs = [];
FS.readdirSync(p).filter(
f => FS.statSync(join(p, f)).isDirectory()
).forEach(folder => {
dirs.push(JP(dir, folder));
});
this.load(dirs);
}
else
FS.mkdirSync(dir);
},
get: function(hash){
return new Promise((resolve, reject) => {
if(this[hash]) return resolve(this[hash]);
Dat(JP(this.dir, hash), {key: hash, sparse: true, latest: false}, (err, dat) => {
if(err) return reject();
dat.joinNetwork();
var key = dat.key.toString('hex');
console.log('Dat #'+key+' '+folder)
Dats[key] = dat;
resolve(dat);
});
});
},
load: function(folders){
if(typeof folders == 'string') folders = [folders];
folders.forEach(folder => {
this.open(folder);
});
}
open(folder){
return new Promise((resolve, reject) => {
Dat(folder, {sparse: true, latest: false}, (err, dat) => {
if(err) return reject(err);
var key = dat.key.toString('hex');
console.log('Dat #'+key+' '+folder)
Dats[key] = dat;
resolve(dat);
});
});
}
};
$(document).on('pref', ev => {
});
$(document).on('connected', ev => {
W({cmd: 'load', path: 'dats.log'}, r => {
if(r.item && r.item.length)
Dats.load(r.item);
});
});
$(document).on('loaded', ev => {
Pix8.onPlus.dat = d => {
console.log(d);
Dats.load(d);
W({
cmd: 'save',
path: 'dats.log',
log: d
});
}
});