web: save contacts works
This commit is contained in:
parent
4db7250ccc
commit
643add9177
5 changed files with 73 additions and 5 deletions
|
@ -17,7 +17,6 @@
|
|||
<script defer src="js/bech32.js?v=1"></script>
|
||||
<script defer src="js/nostr.js?v=7"></script>
|
||||
<script defer src="js/core.js?v=1"></script>
|
||||
<script defer src="js/cache.js?v=1"></script>
|
||||
<script defer src="js/model.js?v=1"></script>
|
||||
<script defer src="js/filters.js?v=1"></script>
|
||||
<script defer src="js/contacts.js?v=1"></script>
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -23,6 +23,69 @@ function contacts_push_relay(contacts, relay) {
|
|||
|
||||
/* contacts_save commits the contacts data to storage.
|
||||
*/
|
||||
function contacts_save(contacts) {
|
||||
log_warn("contacts_save not implemented");
|
||||
async function contacts_save(contacts) {
|
||||
function _contacts_save(ev, resolve, reject) {
|
||||
const db = ev.target.result;
|
||||
let tx = db.transaction("friends", "readwrite");
|
||||
let store = tx.objectStore("friends");
|
||||
contacts.friends.forEach((pubkey) => {
|
||||
//log_debug("storing", pubkey);
|
||||
store.put({pubkey});
|
||||
});
|
||||
tx.oncomplete = (ev) => {
|
||||
db.close();
|
||||
resolve();
|
||||
log_debug("contacts saved successfully", contacts.friends.size);
|
||||
}
|
||||
tx.onerror = (ev) => {
|
||||
db.close();
|
||||
log_error(`tx errorCode: ${ev.request.errorCode}`);
|
||||
window.alert("An error occured saving contacts. Check console.");
|
||||
reject(ev);
|
||||
};
|
||||
};
|
||||
return dbcall(_contacts_save);
|
||||
}
|
||||
|
||||
async function contacts_load(model) {
|
||||
function _contacts_load(ev, resolve, reject) {
|
||||
const db = ev.target.result;
|
||||
const tx = db.transaction("friends", "readonly");
|
||||
const store = tx.objectStore("friends");
|
||||
const cursor = store.openCursor();
|
||||
cursor.onsuccess = (ev)=> {
|
||||
var cursor = ev.target.result;
|
||||
if (cursor) {
|
||||
//log_debug("cursor val", cursor.value);
|
||||
model.contacts.friends.add(cursor.value.pubkey);
|
||||
cursor.continue();
|
||||
} else {
|
||||
db.close();
|
||||
resolve();
|
||||
log_debug("contacts loaded successfully");
|
||||
}
|
||||
}
|
||||
cursor.onerror = (ev) => {
|
||||
db.close();
|
||||
reject(ev);
|
||||
log_error("Could not load contacts.");
|
||||
}
|
||||
}
|
||||
return dbcall(_contacts_load);
|
||||
}
|
||||
|
||||
async function dbcall(fn) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var open = indexedDB.open("damus", 2);
|
||||
open.onupgradeneeded = (ev) => {
|
||||
const db = ev.target.result;
|
||||
const os = db.createObjectStore("friends", {keyPath: "pubkey"});
|
||||
};
|
||||
open.onsuccess = (ev) => {
|
||||
fn(ev, resolve, reject);
|
||||
}
|
||||
open.onerror = (ev) => {
|
||||
reject(err);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ async function damus_web_init_ready() {
|
|||
model.pubkey = await get_pubkey()
|
||||
if (!model.pubkey)
|
||||
return
|
||||
|
||||
const {RelayPool} = nostrjs
|
||||
const pool = RelayPool(BOOTSTRAP_RELAYS)
|
||||
const ids = {
|
||||
|
@ -50,6 +51,12 @@ async function damus_web_init_ready() {
|
|||
dms: "dms",
|
||||
}
|
||||
|
||||
let err;
|
||||
err = await contacts_load(model);
|
||||
if (err) {
|
||||
window.alert("Unable to load contacts.");
|
||||
}
|
||||
|
||||
model.ids = ids
|
||||
model.pool = pool
|
||||
model.view_el = document.querySelector("#view")
|
||||
|
|
|
@ -112,7 +112,7 @@ function click_toggle_follow_user(el) {
|
|||
contacts.friends.add(pubkey);
|
||||
}
|
||||
el.innerText = is_friend ? "Follow" : "Unfollow";
|
||||
contacts_save();
|
||||
contacts_save(contacts);
|
||||
}
|
||||
|
||||
/* click_event opens the thread view from the element's specified element id
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue