feat: in-memory fallback for storing user profiles #110

Merged
verbiricha merged 17 commits from dbfix into main 2023-01-27 21:38:42 +00:00
19 changed files with 293 additions and 112 deletions
Showing only changes of commit a8348597e2 - Show all commits

View File

@ -1,34 +0,0 @@
import { HexKey, TaggedRawEvent, UserMetadata } from "Nostr";
import { hexToBech32 } from "../Util";
export interface MetadataCache extends UserMetadata {
/**
* When the object was saved in cache
*/
loaded: number,
/**
* When the source metadata event was created
*/
created: number,
/**
* The pubkey of the owner of this metadata
*/
pubkey: HexKey
};
export function mapEventToProfile(ev: TaggedRawEvent) {
try {
let data: UserMetadata = JSON.parse(ev.content);
return {
pubkey: ev.pubkey,
npub: hexToBech32("npub", ev.pubkey),
created: ev.created_at,
loaded: new Date().getTime(),
...data
} as MetadataCache;
} catch (e) {
console.error("Failed to parse JSON", ev, e);
}
}

View File

@ -1,8 +1,7 @@
import Dexie, { Table } from "dexie"; import Dexie, { Table } from "dexie";
import { MetadataCache } from "Db/User"; import { MetadataCache } from "State/Users";
import { hexToBech32 } from "Util"; import { hexToBech32 } from "Util";
export class SnortDB extends Dexie { export class SnortDB extends Dexie {
users!: Table<MetadataCache>; users!: Table<MetadataCache>;

View File

@ -1,11 +1,11 @@
import { useMemo } from "react"; import { useMemo } from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import { HexKey } from "Nostr"; import { HexKey } from "Nostr";
import { hexToBech32, profileLink } from "Util"; import { hexToBech32, profileLink } from "Util";
export default function Mention({ pubkey }: { pubkey: HexKey }) { export default function Mention({ pubkey }: { pubkey: HexKey }) {
const user = useProfile(pubkey)?.get(pubkey); const user = useUserProfile(pubkey)
const name = useMemo(() => { const name = useMemo(() => {
let name = hexToBech32("npub", pubkey).substring(0, 12); let name = hexToBech32("npub", pubkey).substring(0, 12);
@ -18,4 +18,4 @@ export default function Mention({ pubkey }: { pubkey: HexKey }) {
}, [user, pubkey]); }, [user, pubkey]);
return <Link to={profileLink(pubkey)} onClick={(e) => e.stopPropagation()}>@{name}</Link> return <Link to={profileLink(pubkey)} onClick={(e) => e.stopPropagation()}>@{name}</Link>
} }

View File

@ -13,7 +13,7 @@ import {
import AsyncButton from "Element/AsyncButton"; import AsyncButton from "Element/AsyncButton";
import LNURLTip from "Element/LNURLTip"; import LNURLTip from "Element/LNURLTip";
import Copy from "Element/Copy"; import Copy from "Element/Copy";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile }from "Feed/ProfileFeed";
import useEventPublisher from "Feed/EventPublisher"; import useEventPublisher from "Feed/EventPublisher";
import { hexToBech32 } from "Util"; import { hexToBech32 } from "Util";
import { UserMetadata } from "Nostr"; import { UserMetadata } from "Nostr";
@ -31,7 +31,7 @@ type ReduxStore = any;
export default function Nip5Service(props: Nip05ServiceProps) { export default function Nip5Service(props: Nip05ServiceProps) {
const navigate = useNavigate(); const navigate = useNavigate();
const pubkey = useSelector<ReduxStore, string>(s => s.login.publicKey); const pubkey = useSelector<ReduxStore, string>(s => s.login.publicKey);
const user = useProfile(pubkey); const user = useUserProfile(pubkey);
const publisher = useEventPublisher(); const publisher = useEventPublisher();
const svc = new ServiceProvider(props.service); const svc = new ServiceProvider(props.service);
const [serviceConfig, setServiceConfig] = useState<ServiceConfig>(); const [serviceConfig, setServiceConfig] = useState<ServiceConfig>();
@ -190,4 +190,4 @@ export default function Nip5Service(props: Nip05ServiceProps) {
</div>} </div>}
</> </>
) )
} }

View File

@ -9,7 +9,7 @@ import { eventLink, getReactions, hexToBech32 } from "Util";
import NoteFooter from "Element/NoteFooter"; import NoteFooter from "Element/NoteFooter";
import NoteTime from "Element/NoteTime"; import NoteTime from "Element/NoteTime";
import EventKind from "Nostr/EventKind"; import EventKind from "Nostr/EventKind";
import useProfile from "Feed/ProfileFeed"; import { useUserProfiles } from "Feed/ProfileFeed";
import { TaggedRawEvent, u256 } from "Nostr"; import { TaggedRawEvent, u256 } from "Nostr";
import { useInView } from "react-intersection-observer"; import { useInView } from "react-intersection-observer";
@ -31,7 +31,7 @@ export default function Note(props: NoteProps) {
const { data, isThread, related, highlight, options: opt, ["data-ev"]: parsedEvent } = props const { data, isThread, related, highlight, options: opt, ["data-ev"]: parsedEvent } = props
const ev = useMemo(() => parsedEvent ?? new NEvent(data), [data]); const ev = useMemo(() => parsedEvent ?? new NEvent(data), [data]);
const pubKeys = useMemo(() => ev.Thread?.PubKeys || [], [ev]); const pubKeys = useMemo(() => ev.Thread?.PubKeys || [], [ev]);
const users = useProfile(pubKeys); const users = useUserProfiles(pubKeys);
const deletions = useMemo(() => getReactions(related, ev.Id, EventKind.Deletion), [related]); const deletions = useMemo(() => getReactions(related, ev.Id, EventKind.Deletion), [related]);
const { ref, inView } = useInView({ triggerOnce: true }); const { ref, inView } = useInView({ triggerOnce: true });

View File

@ -9,7 +9,7 @@ import useEventPublisher from "Feed/EventPublisher";
import { getReactions, hexToBech32, normalizeReaction, Reaction } from "Util"; import { getReactions, hexToBech32, normalizeReaction, Reaction } from "Util";
import { NoteCreator } from "Element/NoteCreator"; import { NoteCreator } from "Element/NoteCreator";
import LNURLTip from "Element/LNURLTip"; import LNURLTip from "Element/LNURLTip";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import { default as NEvent } from "Nostr/Event"; import { default as NEvent } from "Nostr/Event";
import { RootState } from "State/Store"; import { RootState } from "State/Store";
import { HexKey, TaggedRawEvent } from "Nostr"; import { HexKey, TaggedRawEvent } from "Nostr";
@ -26,7 +26,7 @@ export default function NoteFooter(props: NoteFooterProps) {
const login = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey); const login = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey);
const prefs = useSelector<RootState, UserPreferences>(s => s.login.preferences); const prefs = useSelector<RootState, UserPreferences>(s => s.login.preferences);
const author = useProfile(ev.RootPubKey)?.get(ev.RootPubKey); const author = useUserProfile(ev.RootPubKey);
const publisher = useEventPublisher(); const publisher = useEventPublisher();
const [reply, setReply] = useState(false); const [reply, setReply] = useState(false);
const [tip, setTip] = useState(false); const [tip, setTip] = useState(false);

View File

@ -3,7 +3,7 @@ import "./NoteToSelf.css";
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faBook, faCertificate } from "@fortawesome/free-solid-svg-icons" import { faBook, faCertificate } from "@fortawesome/free-solid-svg-icons"
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import Nip05 from "Element/Nip05"; import Nip05 from "Element/Nip05";
import { profileLink } from "Util"; import { profileLink } from "Util";
@ -15,7 +15,7 @@ export interface NoteToSelfProps {
}; };
function NoteLabel({pubkey, link}:NoteToSelfProps) { function NoteLabel({pubkey, link}:NoteToSelfProps) {
const user = useProfile(pubkey)?.get(pubkey); const user = useUserProfile(pubkey);
return ( return (
<div> <div>
Note to Self <FontAwesomeIcon icon={faCertificate} size="xs" /> Note to Self <FontAwesomeIcon icon={faCertificate} size="xs" />

View File

@ -2,12 +2,12 @@ import "./ProfileImage.css";
import { useMemo } from "react"; import { useMemo } from "react";
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import { hexToBech32, profileLink } from "Util"; import { hexToBech32, profileLink } from "Util";
import Avatar from "Element/Avatar" import Avatar from "Element/Avatar"
import Nip05 from "Element/Nip05"; import Nip05 from "Element/Nip05";
import { HexKey } from "Nostr"; import { HexKey } from "Nostr";
import { MetadataCache } from "Db/User"; import { MetadataCache } from "State/Users";
export interface ProfileImageProps { export interface ProfileImageProps {
pubkey: HexKey, pubkey: HexKey,
@ -19,7 +19,7 @@ export interface ProfileImageProps {
export default function ProfileImage({ pubkey, subHeader, showUsername = true, className, link }: ProfileImageProps) { export default function ProfileImage({ pubkey, subHeader, showUsername = true, className, link }: ProfileImageProps) {
const navigate = useNavigate(); const navigate = useNavigate();
const user = useProfile(pubkey)?.get(pubkey); const user = useUserProfile(pubkey);
const name = useMemo(() => { const name = useMemo(() => {
return getDisplayName(user, pubkey); return getDisplayName(user, pubkey);

View File

@ -3,7 +3,7 @@ import { ReactNode } from "react";
import ProfileImage from "Element/ProfileImage"; import ProfileImage from "Element/ProfileImage";
import FollowButton from "Element/FollowButton"; import FollowButton from "Element/FollowButton";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import { HexKey } from "Nostr"; import { HexKey } from "Nostr";
import { useInView } from "react-intersection-observer"; import { useInView } from "react-intersection-observer";
@ -16,7 +16,7 @@ export interface ProfilePreviewProps {
} }
export default function ProfilePreview(props: ProfilePreviewProps) { export default function ProfilePreview(props: ProfilePreviewProps) {
const pubkey = props.pubkey; const pubkey = props.pubkey;
const user = useProfile(pubkey)?.get(pubkey); const user = useUserProfile(pubkey);
const { ref, inView } = useInView({ triggerOnce: true }); const { ref, inView } = useInView({ triggerOnce: true });
const options = { const options = {
about: true, about: true,
@ -34,4 +34,4 @@ export default function ProfilePreview(props: ProfilePreviewProps) {
</>} </>}
</div> </div>
) )
} }

View File

@ -10,7 +10,7 @@ import Invoice from "Element/Invoice";
import Hashtag from "Element/Hashtag"; import Hashtag from "Element/Hashtag";
import Tag from "Nostr/Tag"; import Tag from "Nostr/Tag";
import { MetadataCache } from "Db/User"; import { MetadataCache } from "State/Users";
import Mention from "Element/Mention"; import Mention from "Element/Mention";
import TidalEmbed from "Element/TidalEmbed"; import TidalEmbed from "Element/TidalEmbed";
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';

View File

@ -2,7 +2,6 @@ import "@webscopeio/react-textarea-autocomplete/style.css";
import "./Textarea.css"; import "./Textarea.css";
import { useState } from "react"; import { useState } from "react";
import { useLiveQuery } from "dexie-react-hooks";
import ReactTextareaAutocomplete from "@webscopeio/react-textarea-autocomplete"; import ReactTextareaAutocomplete from "@webscopeio/react-textarea-autocomplete";
import emoji from "@jukben/emoji-search"; import emoji from "@jukben/emoji-search";
import TextareaAutosize from "react-textarea-autosize"; import TextareaAutosize from "react-textarea-autosize";
@ -11,7 +10,7 @@ import Avatar from "Element/Avatar";
import Nip05 from "Element/Nip05"; import Nip05 from "Element/Nip05";
import { hexToBech32 } from "Util"; import { hexToBech32 } from "Util";
import { db } from "Db"; import { db } from "Db";
import { MetadataCache } from "Db/User"; import { useQuery, MetadataCache } from "State/Users";
interface EmojiItemProps { interface EmojiItemProps {
name: string name: string
@ -45,16 +44,7 @@ const UserItem = (metadata: MetadataCache) => {
const Textarea = ({ users, onChange, ...rest }: any) => { const Textarea = ({ users, onChange, ...rest }: any) => {
const [query, setQuery] = useState('') const [query, setQuery] = useState('')
const allUsers = useLiveQuery( const allUsers = useQuery(query)
() => db.users
.where("npub").startsWithIgnoreCase(query)
.or("name").startsWithIgnoreCase(query)
.or("display_name").startsWithIgnoreCase(query)
.or("nip05").startsWithIgnoreCase(query)
.limit(5)
.toArray(),
[query],
);
const userDataProvider = (token: string) => { const userDataProvider = (token: string) => {
setQuery(token) setQuery(token)

View File

@ -2,12 +2,12 @@ import "./ZapButton.css";
import { faBolt } from "@fortawesome/free-solid-svg-icons"; import { faBolt } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useState } from "react"; import { useState } from "react";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import { HexKey } from "Nostr"; import { HexKey } from "Nostr";
import LNURLTip from "Element/LNURLTip"; import LNURLTip from "Element/LNURLTip";
const ZapButton = ({ pubkey }: { pubkey: HexKey }) => { const ZapButton = ({ pubkey }: { pubkey: HexKey }) => {
const profile = useProfile(pubkey)?.get(pubkey); const profile = useUserProfile(pubkey);
const [zap, setZap] = useState(false); const [zap, setZap] = useState(false);
const svc = profile?.lud16 || profile?.lud06; const svc = profile?.lud16 || profile?.lud06;

View File

@ -7,9 +7,8 @@ import EventKind from "Nostr/EventKind";
import { Subscriptions } from "Nostr/Subscriptions"; import { Subscriptions } from "Nostr/Subscriptions";
import { addDirectMessage, addNotifications, setFollows, setRelays } from "State/Login"; import { addDirectMessage, addNotifications, setFollows, setRelays } from "State/Login";
import { RootState } from "State/Store"; import { RootState } from "State/Store";
import { db } from "Db"; import { mapEventToProfile, MetadataCache, find, put, bulkGet } from "State/Users";
import useSubscription from "Feed/Subscription"; import useSubscription from "Feed/Subscription";
import { mapEventToProfile, MetadataCache } from "Db/User";
import { getDisplayName } from "Element/ProfileImage"; import { getDisplayName } from "Element/ProfileImage";
import { MentionRegex } from "Const"; import { MentionRegex } from "Const";
@ -81,9 +80,9 @@ export default function useLoginFeed() {
return acc; return acc;
}, { created: 0, profile: <MetadataCache | null>null }); }, { created: 0, profile: <MetadataCache | null>null });
if (maxProfile.profile) { if (maxProfile.profile) {
let existing = await db.users.get(maxProfile.profile.pubkey); let existing = await find(maxProfile.profile.pubkey);
if ((existing?.created ?? 0) < maxProfile.created) { if ((existing?.created ?? 0) < maxProfile.created) {
await db.users.put(maxProfile.profile); await put(maxProfile.profile);
} }
} }
})().catch(console.warn); })().catch(console.warn);
@ -94,7 +93,8 @@ async function makeNotification(ev: TaggedRawEvent) {
switch (ev.kind) { switch (ev.kind) {
case EventKind.TextNote: { case EventKind.TextNote: {
const pubkeys = new Set([ev.pubkey, ...ev.tags.filter(a => a[0] === "p").map(a => a[1]!)]); const pubkeys = new Set([ev.pubkey, ...ev.tags.filter(a => a[0] === "p").map(a => a[1]!)]);
const users = (await db.users.bulkGet(Array.from(pubkeys))).filter(a => a !== undefined).map(a => a!); const users = await bulkGet(Array.from(pubkeys))
// @ts-ignore
const fromUser = users.find(a => a?.pubkey === ev.pubkey); const fromUser = users.find(a => a?.pubkey === ev.pubkey);
const name = getDisplayName(fromUser, ev.pubkey); const name = getDisplayName(fromUser, ev.pubkey);
const avatarUrl = (fromUser?.picture?.length ?? 0) === 0 ? Nostrich : fromUser?.picture; const avatarUrl = (fromUser?.picture?.length ?? 0) === 0 ? Nostrich : fromUser?.picture;
@ -135,4 +135,4 @@ async function sendNotification(ev: TaggedRawEvent) {
vibrate: [500] vibrate: [500]
}); });
} }
} }

View File

@ -1,27 +1,13 @@
import { useLiveQuery } from "dexie-react-hooks"; import { useLiveQuery } from "dexie-react-hooks";
import { useSelector } from "react-redux";
import { useEffect, useMemo } from "react"; import { useEffect, useMemo } from "react";
import { db } from "Db"; import { RootState } from "State/Store";
import { MetadataCache } from "Db/User"; import { MetadataCache, find, bulkGet, useQuery, useKey, useKeys } from "State/Users";
import { HexKey } from "Nostr"; import { HexKey } from "Nostr";
import { System } from "Nostr/System"; import { System } from "Nostr/System";
export default function useProfile(pubKey: HexKey | Array<HexKey> | undefined): Map<HexKey, MetadataCache> | undefined { export function useUserProfile(pubKey: HexKey): MetadataCache | undefined {
const user = useLiveQuery(async () => { const users = useKey(pubKey);
let userList = new Map<HexKey, MetadataCache>();
if (pubKey) {
if (Array.isArray(pubKey)) {
let ret = await db.users.bulkGet(pubKey);
let filtered = ret.filter(a => a !== undefined).map(a => a!);
return new Map(filtered.map(a => [a.pubkey, a]))
} else {
let ret = await db.users.get(pubKey);
if (ret) {
userList.set(ret.pubkey, ret);
}
}
}
return userList;
}, [pubKey]);
useEffect(() => { useEffect(() => {
if (pubKey) { if (pubKey) {
@ -30,5 +16,19 @@ export default function useProfile(pubKey: HexKey | Array<HexKey> | undefined):
} }
}, [pubKey]); }, [pubKey]);
return user; return users;
} }
export function useUserProfiles(pubKeys: Array<HexKey>): Map<HexKey, MetadataCache> | undefined {
const users = useKeys(pubKeys);
useEffect(() => {
if (pubKeys) {
System.TrackMetadata(pubKeys);
return () => System.UntrackMetadata(pubKeys);
}
}, [pubKeys]);
return users;
}

View File

@ -1,7 +1,6 @@
import { HexKey, TaggedRawEvent } from "Nostr"; import { HexKey, TaggedRawEvent } from "Nostr";
import { ProfileCacheExpire } from "Const"; import { ProfileCacheExpire } from "Const";
import { db } from "Db"; import { mapEventToProfile, MetadataCache, add, bulkAdd, bulkGet, find, put, update, bulkPut } from "State/Users";
import { mapEventToProfile, MetadataCache } from "Db/User";
import Connection, { RelaySettings } from "Nostr/Connection"; import Connection, { RelaySettings } from "Nostr/Connection";
import Event from "Nostr/Event"; import Event from "Nostr/Event";
import EventKind from "Nostr/EventKind"; import EventKind from "Nostr/EventKind";
@ -167,7 +166,7 @@ export class NostrSystem {
async _FetchMetadata() { async _FetchMetadata() {
let missing = new Set<HexKey>(); let missing = new Set<HexKey>();
let meta = await db.users.bulkGet(Array.from(this.WantsMetadata)); let meta = await bulkGet(Array.from(this.WantsMetadata));
let expire = new Date().getTime() - ProfileCacheExpire; let expire = new Date().getTime() - ProfileCacheExpire;
for (let pk of this.WantsMetadata) { for (let pk of this.WantsMetadata) {
let m = meta.find(a => a?.pubkey === pk); let m = meta.find(a => a?.pubkey === pk);
@ -190,18 +189,18 @@ export class NostrSystem {
sub.OnEvent = async (e) => { sub.OnEvent = async (e) => {
let profile = mapEventToProfile(e); let profile = mapEventToProfile(e);
if (profile) { if (profile) {
let existing = await db.users.get(profile.pubkey); let existing = await find(profile.pubkey);
if ((existing?.created ?? 0) < profile.created) { if((existing?.created ?? 0) < profile.created) {
await db.users.put(profile); await put(profile);
} else if (existing) { } else if(existing) {
await db.users.update(profile.pubkey, { loaded: new Date().getTime() }); await update(profile.pubkey, { loaded: new Date().getTime() });
} }
} }
} }
let results = await this.RequestSubscription(sub); let results = await this.RequestSubscription(sub);
let couldNotFetch = Array.from(missing).filter(a => !results.some(b => b.pubkey === a)); let couldNotFetch = Array.from(missing).filter(a => !results.some(b => b.pubkey === a));
console.debug("No profiles: ", couldNotFetch); console.debug("No profiles: ", couldNotFetch);
await db.users.bulkPut(couldNotFetch.map(a => { await bulkPut(couldNotFetch.map(a => {
return { return {
pubkey: a, pubkey: a,
loaded: new Date().getTime() loaded: new Date().getTime()
@ -213,4 +212,4 @@ export class NostrSystem {
} }
} }
export const System = new NostrSystem(); export const System = new NostrSystem();

View File

@ -6,7 +6,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faGear, faEnvelope } from "@fortawesome/free-solid-svg-icons"; import { faGear, faEnvelope } from "@fortawesome/free-solid-svg-icons";
import { useNavigate, useParams } from "react-router-dom"; import { useNavigate, useParams } from "react-router-dom";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import FollowButton from "Element/FollowButton"; import FollowButton from "Element/FollowButton";
import { extractLnAddress, parseId, hexToBech32 } from "Util"; import { extractLnAddress, parseId, hexToBech32 } from "Util";
import Avatar from "Element/Avatar"; import Avatar from "Element/Avatar";
@ -33,7 +33,7 @@ export default function ProfilePage() {
const params = useParams(); const params = useParams();
const navigate = useNavigate(); const navigate = useNavigate();
const id = useMemo(() => parseId(params.id!), [params]); const id = useMemo(() => parseId(params.id!), [params]);
const user = useProfile(id)?.get(id); const user = useUserProfile(id);
const loginPubKey = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey); const loginPubKey = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey);
const follows = useSelector<RootState, HexKey[]>(s => s.login.follows); const follows = useSelector<RootState, HexKey[]>(s => s.login.follows);
const isMe = loginPubKey === id; const isMe = loginPubKey === id;

View File

@ -8,7 +8,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faShop } from "@fortawesome/free-solid-svg-icons"; import { faShop } from "@fortawesome/free-solid-svg-icons";
import useEventPublisher from "Feed/EventPublisher"; import useEventPublisher from "Feed/EventPublisher";
import useProfile from "Feed/ProfileFeed"; import { useUserProfile } from "Feed/ProfileFeed";
import VoidUpload from "Feed/VoidUpload"; import VoidUpload from "Feed/VoidUpload";
import { logout } from "State/Login"; import { logout } from "State/Login";
import { hexToBech32, openFile } from "Util"; import { hexToBech32, openFile } from "Util";
@ -21,7 +21,7 @@ export default function ProfileSettings() {
const id = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey); const id = useSelector<RootState, HexKey | undefined>(s => s.login.publicKey);
const privKey = useSelector<RootState, HexKey | undefined>(s => s.login.privateKey); const privKey = useSelector<RootState, HexKey | undefined>(s => s.login.privateKey);
const dispatch = useDispatch(); const dispatch = useDispatch();
const user = useProfile(id)?.get(id || ""); const user = useUserProfile(id!);
const publisher = useEventPublisher(); const publisher = useEventPublisher();
const [name, setName] = useState<string>(); const [name, setName] = useState<string>();

View File

@ -1,13 +1,15 @@
import { configureStore } from "@reduxjs/toolkit"; import { configureStore } from "@reduxjs/toolkit";
import { reducer as LoginReducer } from "State/Login"; import { reducer as LoginReducer } from "State/Login";
import { reducer as UsersReducer } from "State/Users";
const store = configureStore({ const store = configureStore({
reducer: { reducer: {
login: LoginReducer login: LoginReducer,
users: UsersReducer,
} }
}); });
export type RootState = ReturnType<typeof store.getState> export type RootState = ReturnType<typeof store.getState>
export type AppDispatch = typeof store.dispatch export type AppDispatch = typeof store.dispatch
export default store; export default store;

225
src/State/Users.ts Normal file
View File

@ -0,0 +1,225 @@
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import { useMemo } from "react";
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import { useLiveQuery } from "dexie-react-hooks";
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import { HexKey, TaggedRawEvent, UserMetadata } from "Nostr";
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import { hexToBech32 } from "../Util";
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import { db } from "Db";
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
import store from "State/Store";
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export interface MetadataCache extends UserMetadata {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
/**
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
* When the object was saved in cache
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
*/
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
loaded: number,
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
/**
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
* When the source metadata event was created
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
*/
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
created: number,
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
/**
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
* The pubkey of the owner of this metadata
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
*/
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
pubkey: HexKey
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
/**
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
* The bech32 encoded pubkey
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
*/
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
npub: string
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
};
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export function mapEventToProfile(ev: TaggedRawEvent) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
let data: UserMetadata = JSON.parse(ev.content);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
pubkey: ev.pubkey,
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
npub: hexToBech32("npub", ev.pubkey),
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
created: ev.created_at,
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
loaded: new Date().getTime(),
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
...data
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} as MetadataCache;
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (e) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
console.error("Failed to parse JSON", ev, e);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export interface UsersStore {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
/**
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
* A list of seen users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
*/
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
users: Record<HexKey, MetadataCache>,
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
};
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const InitState = { users: {} } as UsersStore;
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const UsersSlice = createSlice({
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
name: "Users",
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
initialState: InitState,
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
reducers: {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
setUsers(state, action: PayloadAction<Record<HexKey, MetadataCache>>) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
state.users = action.payload
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
});
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { setUsers } = UsersSlice.actions
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
function groupByPubkey(acc: Record<HexKey, MetadataCache>, user: MetadataCache) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return { ...acc, [user.pubkey]: user }
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
function groupByPubkeyMap(acc: Map<HexKey, MetadataCache>, user: MetadataCache) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
acc.set(user.pubkey, user)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return acc
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const add = async (user: MetadataCache) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return await db.users.add(user)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
store.dispatch(setUsers({...users, [user.pubkey]: user }))
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const bulkAdd = async (newUserProfiles: MetadataCache[]) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return await db.users.bulkAdd(newUserProfiles)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const newUsers = newUserProfiles.reduce(groupByPubkey, {})
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
store.dispatch(setUsers({...users, ...newUsers }))
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const bulkGet = async (pubKeys: HexKey[]) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const ret = await db.users.bulkGet(pubKeys);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return ret.filter(a => a !== undefined).map(a => a!);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const ids = new Set([...pubKeys])
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return Object.values(users).filter(user => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return ids.has(user.pubkey)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
})
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const find = async (pubKey: HexKey) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const user = await db.users.get(pubKey);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return user
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return users.users[pubKey]
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const put = async (user: MetadataCache) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
await db.users.put(user)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
store.dispatch(setUsers({...users, [user.pubkey]: user }))
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const update = async (pubKey: HexKey, fields: Record<string, any>) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
await db.users.update(pubKey, fields)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const current = users[pubKey]
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
store.dispatch(setUsers({...users, [pubKey]: {...current, ...fields }}))
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const bulkPut = async (newUsers: MetadataCache[]) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
try {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
await db.users.bulkPut(newUsers)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
} catch (error) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const newProfiles = newUsers.reduce(groupByPubkey, {})
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
store.dispatch(setUsers({ ...users, ...newProfiles }))
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export function useQuery(query: string, limit: number = 5) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const inMemoryUsers = useMemo(() => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return Object.values(users).filter((user) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return user.name?.includes(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
|| user.npub?.includes(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
|| user.display_name?.includes(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
|| user.nip05?.includes(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
})
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}, [users, query])
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const allUsers = useLiveQuery(
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
() => db.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.where("npub").startsWithIgnoreCase(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.or("name").startsWithIgnoreCase(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.or("display_name").startsWithIgnoreCase(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.or("nip05").startsWithIgnoreCase(query)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.limit(5)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.toArray()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
.catch((err) => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return inMemoryUsers
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}),
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
[query],
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return allUsers
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export function useKey(pubKey: HexKey) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const inMemoryUser = useMemo(() => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return users[pubKey]
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}, [users, pubKey])
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const user = useLiveQuery(async () => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
if (pubKey) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return await find(pubKey);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}, [pubKey]);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return user ?? inMemoryUser
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export function useKeys(pubKeys: HexKey[]): Map<HexKey, MetadataCache> {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const state = store.getState()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const { users } = state.users
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const inMemoryUsers = useMemo(() => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const res = new Map()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
Object.values(users).forEach(u => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
if (pubKeys.includes(u.pubkey)) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
res.set(u.pubkey, u)
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
})
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return res
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}, [users, pubKeys])
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const dbUsers = useLiveQuery(async () => {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
if (pubKeys) {
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
const ret = await bulkGet(pubKeys);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return new Map(ret.map(a => [a.pubkey, a]))
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return new Map()
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}, [pubKeys]);
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
return dbUsers || inMemoryUsers
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
}
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later
export const reducer = UsersSlice.reducer;
v0l commented 2023-01-21 14:25:05 +00:00 (Migrated from github.com)
Review

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a const SnortDb we can have const db = SnortDb | ReduxDb which both implement the users store, no need for try/catch then

At startup we can test if indexdDb is available with window.indexdDb.open("test").catch(() => "Not supported") or something similar, at this point we initialize the db to be ReduxDb which implements UsersDb or some other interface

This is great, i think we can improve it one more way, if we create an interface which defines these methods, then instead of using try/catch with a `const SnortDb` we can have `const db = SnortDb | ReduxDb` which both implement the users store, no need for try/catch then At startup we can test if indexdDb is available with `window.indexdDb.open("test").catch(() => "Not supported")` or something similar, at this point we initialize the `db` to be `ReduxDb` which implements `UsersDb` or some other interface
v0l commented 2023-01-23 09:44:56 +00:00 (Migrated from github.com)
Review

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later

Hey if you dont have time to make these changes maybe lets just merge it now and work on it later