Restore opened user query buffers

Closes: https://todo.sr.ht/~emersion/gamja/93
This commit is contained in:
Simon Ser 2021-08-23 12:02:36 +02:00
parent 4dd1fac002
commit 016ca27f2d
2 changed files with 86 additions and 2 deletions

View file

@ -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();
}
}