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/bech32.js?v=1"></script>
|
||||||
<script defer src="js/nostr.js?v=7"></script>
|
<script defer src="js/nostr.js?v=7"></script>
|
||||||
<script defer src="js/core.js?v=1"></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/model.js?v=1"></script>
|
||||||
<script defer src="js/filters.js?v=1"></script>
|
<script defer src="js/filters.js?v=1"></script>
|
||||||
<script defer src="js/contacts.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.
|
/* contacts_save commits the contacts data to storage.
|
||||||
*/
|
*/
|
||||||
function contacts_save(contacts) {
|
async function contacts_save(contacts) {
|
||||||
log_warn("contacts_save not implemented");
|
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()
|
model.pubkey = await get_pubkey()
|
||||||
if (!model.pubkey)
|
if (!model.pubkey)
|
||||||
return
|
return
|
||||||
|
|
||||||
const {RelayPool} = nostrjs
|
const {RelayPool} = nostrjs
|
||||||
const pool = RelayPool(BOOTSTRAP_RELAYS)
|
const pool = RelayPool(BOOTSTRAP_RELAYS)
|
||||||
const ids = {
|
const ids = {
|
||||||
|
@ -50,6 +51,12 @@ async function damus_web_init_ready() {
|
||||||
dms: "dms",
|
dms: "dms",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let err;
|
||||||
|
err = await contacts_load(model);
|
||||||
|
if (err) {
|
||||||
|
window.alert("Unable to load contacts.");
|
||||||
|
}
|
||||||
|
|
||||||
model.ids = ids
|
model.ids = ids
|
||||||
model.pool = pool
|
model.pool = pool
|
||||||
model.view_el = document.querySelector("#view")
|
model.view_el = document.querySelector("#view")
|
||||||
|
|
|
@ -112,7 +112,7 @@ function click_toggle_follow_user(el) {
|
||||||
contacts.friends.add(pubkey);
|
contacts.friends.add(pubkey);
|
||||||
}
|
}
|
||||||
el.innerText = is_friend ? "Follow" : "Unfollow";
|
el.innerText = is_friend ? "Follow" : "Unfollow";
|
||||||
contacts_save();
|
contacts_save(contacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* click_event opens the thread view from the element's specified element id
|
/* click_event opens the thread view from the element's specified element id
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue