Restore opened user query buffers
Closes: https://todo.sr.ht/~emersion/gamja/93
This commit is contained in:
parent
4dd1fac002
commit
016ca27f2d
2 changed files with 86 additions and 2 deletions
68
store.js
68
store.js
|
@ -35,3 +35,71 @@ export const receipts = {
|
|||
rawReceipts.put(Object.fromEntries(m));
|
||||
},
|
||||
};
|
||||
|
||||
export class Buffer {
|
||||
raw = new Item("buffers");
|
||||
m = null;
|
||||
|
||||
constructor() {
|
||||
var obj = this.raw.load();
|
||||
this.m = new Map(Object.entries(obj || {}));
|
||||
}
|
||||
|
||||
key(buf) {
|
||||
return JSON.stringify({
|
||||
name: buf.name,
|
||||
server: {
|
||||
url: buf.server.url,
|
||||
nick: buf.server.nick,
|
||||
bouncerNetwork: buf.server.bouncerNetwork,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
save() {
|
||||
if (this.m.size > 0) {
|
||||
this.raw.put(Object.fromEntries(this.m));
|
||||
} else {
|
||||
this.raw.put(null);
|
||||
}
|
||||
}
|
||||
|
||||
put(buf) {
|
||||
this.m.set(this.key(buf), {
|
||||
name: buf.name,
|
||||
server: {
|
||||
url: buf.server.url,
|
||||
nick: buf.server.nick,
|
||||
bouncerNetwork: buf.server.bouncerNetwork,
|
||||
},
|
||||
});
|
||||
this.save();
|
||||
}
|
||||
|
||||
delete(buf) {
|
||||
this.m.delete(this.key(buf));
|
||||
this.save();
|
||||
}
|
||||
|
||||
load(server) {
|
||||
let buffers = [];
|
||||
for (const buf of this.m.values()) {
|
||||
if (buf.server.url !== server.url || buf.server.nick !== server.nick || buf.server.bouncerNetwork !== server.bouncerNetwork) {
|
||||
continue;
|
||||
}
|
||||
buffers.push(buf);
|
||||
}
|
||||
return buffers;
|
||||
}
|
||||
|
||||
clear(server) {
|
||||
if (server) {
|
||||
for (const buf of this.load(server)) {
|
||||
this.m.delete(this.key(buf));
|
||||
}
|
||||
} else {
|
||||
this.m = new Map();
|
||||
}
|
||||
this.save();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue