- {#if findReply(note) && showParent}
+ {#if findReply(note)}
Reply to {findReply(note).slice(0, 8)}
diff --git a/src/partials/Notes.svelte b/src/partials/Notes.svelte
index d730a529..e3124944 100644
--- a/src/partials/Notes.svelte
+++ b/src/partials/Notes.svelte
@@ -6,7 +6,6 @@
import relay from 'src/relay'
export let loadNotes
- export let showParent = false
let notes
let limit = 0
@@ -25,7 +24,7 @@
{#if notes}
{#each ($notes || []) as n (n.id)}
-
+
{/each}
{/if}
diff --git a/src/relay/db.js b/src/relay/db.js
index ec7214b1..1f2e5a11 100644
--- a/src/relay/db.js
+++ b/src/relay/db.js
@@ -2,15 +2,15 @@ import Dexie from 'dexie'
import {writable, get} from 'svelte/store'
import {groupBy, prop, flatten, pick} from 'ramda'
import {ensurePlural, switcherFn} from 'hurdak/lib/hurdak'
-import {now, getLocalJson, setLocalJson} from 'src/util/misc'
+import {now, timedelta, getLocalJson, setLocalJson} from 'src/util/misc'
import {filterTags, findReply, findRoot} from 'src/util/nostr'
export const db = new Dexie('coracle/relay')
-db.version(4).stores({
+db.version(5).stores({
relays: '++url, name',
events: '++id, pubkey, created_at, kind, content, reply, root',
- tags: '++key, event, value',
+ tags: '++key, event, value, created_at',
})
window.db = db
@@ -39,7 +39,7 @@ db.events.process = async events => {
// Persist notes and reactions
if (notesAndReactions.length > 0) {
const persistentEvents = notesAndReactions
- .map(e => ({...e, root: findRoot(e), reply: findReply(e), added_at: now()}))
+ .map(e => ({...e, root: findRoot(e), reply: findReply(e), created_at: now()}))
db.events.bulkPut(persistentEvents)
@@ -54,6 +54,7 @@ db.events.process = async events => {
value: tag[1],
relay: tag[2],
mark: tag[3],
+ created_at: e.created_at,
})
)
)
@@ -102,3 +103,9 @@ db.events.process = async events => {
return $people
})
}
+
+// On initial load, delete old event data
+const threshold = now() - timedelta(30, 'days')
+
+db.events.where('created_at').below(threshold).delete()
+db.tags.where('created_at').below(threshold).delete()
diff --git a/src/relay/index.js b/src/relay/index.js
index f8ccea1b..9669bae3 100644
--- a/src/relay/index.js
+++ b/src/relay/index.js
@@ -1,6 +1,6 @@
import {liveQuery} from 'dexie'
import {get} from 'svelte/store'
-import {pluck, take, uniqBy, groupBy, concat, without, prop, isNil, identity} from 'ramda'
+import {pluck, uniq, take, uniqBy, groupBy, concat, without, prop, isNil, identity} from 'ramda'
import {ensurePlural, createMap, ellipsize} from 'hurdak/lib/hurdak'
import {escapeHtml} from 'src/util/html'
import {filterTags, findReply, findRoot} from 'src/util/nostr'
@@ -216,9 +216,17 @@ const loadNoteContext = async (note, {loadParent = false} = {}) => {
filter.push({kinds: [0], authors: [note.pubkey]})
}
- await pool.loadEvents(filter)
- const replyId = findReply(note)
+ // Load the events
+ const events = await pool.loadEvents(filter)
+ // Load any related people we're missing
+ const $people = get(people)
+ await pool.loadPeople(
+ uniq(pluck('pubkey', events)).filter(k => !$people[k])
+ )
+
+ // Load the note's parent
+ const replyId = findReply(note)
if (loadParent && replyId) {
await getOrLoadNote(replyId)
}
diff --git a/src/relay/pool.js b/src/relay/pool.js
index 4d556119..90302d45 100644
--- a/src/relay/pool.js
+++ b/src/relay/pool.js
@@ -207,5 +207,5 @@ const syncNetwork = async () => {
export default {
getPubkey, getRelays, addRelay, removeRelay, setPrivateKey, setPublicKey,
- publishEvent, loadEvents, listenForEvents, syncNetwork,
+ publishEvent, loadEvents, listenForEvents, syncNetwork, loadPeople,
}
diff --git a/src/routes/Alerts.svelte b/src/routes/Alerts.svelte
index e5a62505..4e2383f9 100644
--- a/src/routes/Alerts.svelte
+++ b/src/routes/Alerts.svelte
@@ -103,7 +103,7 @@
{#if e.people}
{:else}
-
+
{/if}
{/each}
diff --git a/src/routes/Login.svelte b/src/routes/Login.svelte
index 9e208e8d..c2f4a338 100644
--- a/src/routes/Login.svelte
+++ b/src/routes/Login.svelte
@@ -63,15 +63,17 @@
Welcome!
- To the Dogwood Social Network
+ To the Nostr Protocol Network
-
- To log in to existing account, simply enter your private key. To create a new account, just
- let us generate one for you. You can also use
- a compatible browser extension to
- sign events without having to paste your private key here.
-
+
+ To log in to existing account, simply enter your private key below. To create a new account,
+ just let us generate one for you.
+
+
+ You can also use a compatible browser extension to
+ sign events without having to paste your private key here (recommended).
+
Private Key
diff --git a/src/routes/Notes.svelte b/src/routes/Notes.svelte
index bfacc65e..b43f4e14 100644
--- a/src/routes/Notes.svelte
+++ b/src/routes/Notes.svelte
@@ -4,7 +4,7 @@
import Tabs from "src/partials/Tabs.svelte"
import Network from "src/views/notes/Network.svelte"
import Global from "src/views/notes/Global.svelte"
- import {connections} from 'src/relay'
+ import {connections, user} from 'src/relay'
export let activeTab
@@ -19,7 +19,7 @@
> to get started.
-{:else}
+{:else if $user}
{#if activeTab === 'network'}
@@ -34,5 +34,12 @@
+{:else}
+
+
+ Don't have an account? Click
here to join the nostr network.
+
+
+
{/if}
diff --git a/src/routes/Person.svelte b/src/routes/Person.svelte
index d9be7bd0..57734bc7 100644
--- a/src/routes/Person.svelte
+++ b/src/routes/Person.svelte
@@ -111,7 +111,7 @@
{#if activeTab === 'notes'}
-
+
{:else if activeTab === 'likes'}
{:else if activeTab === 'network'}
diff --git a/src/util/misc.js b/src/util/misc.js
index d1403a02..bc420cf4 100644
--- a/src/util/misc.js
+++ b/src/util/misc.js
@@ -100,7 +100,7 @@ export const getLastSync = (k, fallback) => {
export class Cursor {
constructor(since, delta) {
- this.since = since || now() - delta,
+ this.since = (since || now()) - delta,
this.delta = delta
}
step() {
diff --git a/src/views/NoteDetail.svelte b/src/views/NoteDetail.svelte
index 2584b182..d7c79e2b 100644
--- a/src/views/NoteDetail.svelte
+++ b/src/views/NoteDetail.svelte
@@ -47,7 +47,7 @@
{:else if $observable}