mirror of
https://github.com/luminous-devs/lume.git
synced 2024-09-19 11:43:30 +00:00
update
This commit is contained in:
parent
9a09a04a5d
commit
4f41022b30
@ -1,9 +1,8 @@
|
|||||||
import { NDKTag, NDKUserProfile } from '@nostr-dev-kit/ndk';
|
|
||||||
import destr from 'destr';
|
import destr from 'destr';
|
||||||
import Database from 'tauri-plugin-sql-api';
|
import Database from 'tauri-plugin-sql-api';
|
||||||
|
|
||||||
import { getParentID } from '@utils/transform';
|
import { getParentID } from '@utils/transform';
|
||||||
import { Chats, LumeEvent } from '@utils/types';
|
import { Account, Block, Chats, LumeEvent } from '@utils/types';
|
||||||
|
|
||||||
let db: null | Database = null;
|
let db: null | Database = null;
|
||||||
|
|
||||||
@ -20,7 +19,9 @@ export async function connect(): Promise<Database> {
|
|||||||
// get active account
|
// get active account
|
||||||
export async function getActiveAccount() {
|
export async function getActiveAccount() {
|
||||||
const db = await connect();
|
const db = await connect();
|
||||||
const result: any = await db.select('SELECT * FROM accounts WHERE is_active = 1;');
|
const result: Array<Account> = await db.select(
|
||||||
|
'SELECT * FROM accounts WHERE is_active = 1;'
|
||||||
|
);
|
||||||
if (result.length > 0) {
|
if (result.length > 0) {
|
||||||
return result[0];
|
return result[0];
|
||||||
} else {
|
} else {
|
||||||
@ -31,9 +32,10 @@ export async function getActiveAccount() {
|
|||||||
// get all accounts
|
// get all accounts
|
||||||
export async function getAccounts() {
|
export async function getAccounts() {
|
||||||
const db = await connect();
|
const db = await connect();
|
||||||
return await db.select(
|
const result: Array<Account> = await db.select(
|
||||||
'SELECT * FROM accounts WHERE is_active = 0 ORDER BY created_at DESC;'
|
'SELECT * FROM accounts WHERE is_active = 0 ORDER BY created_at DESC;'
|
||||||
);
|
);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create account
|
// create account
|
||||||
@ -433,15 +435,19 @@ export async function updateItemInBlacklist(content: string, status: number) {
|
|||||||
// get all blocks
|
// get all blocks
|
||||||
export async function getBlocks() {
|
export async function getBlocks() {
|
||||||
const db = await connect();
|
const db = await connect();
|
||||||
const activeAccount = await getActiveAccount();
|
const account = await getActiveAccount();
|
||||||
const result: any = await db.select(
|
const result: Array<Block> = await db.select(
|
||||||
`SELECT * FROM blocks WHERE account_id = "${activeAccount.id}" ORDER BY created_at DESC;`
|
`SELECT * FROM blocks WHERE account_id = "${account.id}" ORDER BY created_at DESC;`
|
||||||
);
|
);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create block
|
// create block
|
||||||
export async function createBlock(kind: number, title: string, content: any) {
|
export async function createBlock(
|
||||||
|
kind: number,
|
||||||
|
title: string,
|
||||||
|
content: string | string[]
|
||||||
|
) {
|
||||||
const db = await connect();
|
const db = await connect();
|
||||||
const activeAccount = await getActiveAccount();
|
const activeAccount = await getActiveAccount();
|
||||||
return await db.execute(
|
return await db.execute(
|
||||||
|
@ -46,12 +46,9 @@ export function NoteActions({ id, pubkey }: { id: string; pubkey: string }) {
|
|||||||
</button>
|
</button>
|
||||||
</Tooltip.Trigger>
|
</Tooltip.Trigger>
|
||||||
<Tooltip.Portal>
|
<Tooltip.Portal>
|
||||||
<Tooltip.Content
|
<Tooltip.Content className="-left-10 select-none rounded-md border-t border-zinc-600/50 bg-zinc-700 px-3.5 py-1.5 text-sm leading-none text-zinc-100 backdrop-blur-lg will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade">
|
||||||
className="-left-10 select-none rounded-md bg-zinc-800/80 px-3.5 py-1.5 text-sm leading-none text-zinc-100 backdrop-blur-lg will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade"
|
|
||||||
sideOffset={5}
|
|
||||||
>
|
|
||||||
Open thread
|
Open thread
|
||||||
<Tooltip.Arrow className="fill-zinc-800/80 backdrop-blur-lg" />
|
<Tooltip.Arrow className="fill-zinc-700" />
|
||||||
</Tooltip.Content>
|
</Tooltip.Content>
|
||||||
</Tooltip.Portal>
|
</Tooltip.Portal>
|
||||||
</Tooltip.Root>
|
</Tooltip.Root>
|
||||||
|
@ -72,8 +72,8 @@ export function NoteReaction({ id, pubkey }: { id: string; pubkey: string }) {
|
|||||||
</Popover.Trigger>
|
</Popover.Trigger>
|
||||||
<Popover.Portal>
|
<Popover.Portal>
|
||||||
<Popover.Content
|
<Popover.Content
|
||||||
className="select-none rounded-md bg-zinc-800/80 px-1 py-1 text-sm leading-none text-zinc-100 backdrop-blur-lg will-change-[transform,opacity] data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=top]:animate-slideDownAndFade"
|
className="select-none rounded-md border-t border-zinc-600/50 bg-zinc-700 px-1 py-1 text-sm leading-none text-zinc-100 will-change-[transform,opacity] data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=top]:animate-slideDownAndFade"
|
||||||
sideOffset={5}
|
sideOffset={0}
|
||||||
side="top"
|
side="top"
|
||||||
>
|
>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
@ -133,7 +133,7 @@ export function NoteReaction({ id, pubkey }: { id: string; pubkey: string }) {
|
|||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<Popover.Arrow className="fill-zinc-800" />
|
<Popover.Arrow className="fill-zinc-700" />
|
||||||
</Popover.Content>
|
</Popover.Content>
|
||||||
</Popover.Portal>
|
</Popover.Portal>
|
||||||
</Popover.Root>
|
</Popover.Root>
|
||||||
|
@ -19,12 +19,9 @@ export function NoteReply({ id, pubkey }: { id: string; pubkey: string }) {
|
|||||||
</button>
|
</button>
|
||||||
</Tooltip.Trigger>
|
</Tooltip.Trigger>
|
||||||
<Tooltip.Portal>
|
<Tooltip.Portal>
|
||||||
<Tooltip.Content
|
<Tooltip.Content className="-left-10 select-none rounded-md border-t border-zinc-600/50 bg-zinc-700 px-3.5 py-1.5 text-sm leading-none text-zinc-100 will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade">
|
||||||
className="-left-10 select-none rounded-md bg-zinc-800/80 px-3.5 py-1.5 text-sm leading-none text-zinc-100 backdrop-blur-lg will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade"
|
|
||||||
sideOffset={5}
|
|
||||||
>
|
|
||||||
Quick reply
|
Quick reply
|
||||||
<Tooltip.Arrow className="fill-zinc-800/80 backdrop-blur-lg" />
|
<Tooltip.Arrow className="fill-zinc-700" />
|
||||||
</Tooltip.Content>
|
</Tooltip.Content>
|
||||||
</Tooltip.Portal>
|
</Tooltip.Portal>
|
||||||
</Tooltip.Root>
|
</Tooltip.Root>
|
||||||
|
@ -29,12 +29,9 @@ export function NoteRepost({ id, pubkey }: { id: string; pubkey: string }) {
|
|||||||
</button>
|
</button>
|
||||||
</Tooltip.Trigger>
|
</Tooltip.Trigger>
|
||||||
<Tooltip.Portal>
|
<Tooltip.Portal>
|
||||||
<Tooltip.Content
|
<Tooltip.Content className="-left-10 select-none rounded-md border-t border-zinc-600/50 bg-zinc-700 px-3.5 py-1.5 text-sm leading-none text-zinc-100 will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade">
|
||||||
className="-left-10 select-none rounded-md bg-zinc-800/80 px-3.5 py-1.5 text-sm leading-none text-zinc-100 backdrop-blur-lg will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade"
|
|
||||||
sideOffset={5}
|
|
||||||
>
|
|
||||||
Repost
|
Repost
|
||||||
<Tooltip.Arrow className="fill-zinc-800/80 backdrop-blur-lg" />
|
<Tooltip.Arrow className="fill-zinc-700" />
|
||||||
</Tooltip.Content>
|
</Tooltip.Content>
|
||||||
</Tooltip.Portal>
|
</Tooltip.Portal>
|
||||||
</Tooltip.Root>
|
</Tooltip.Root>
|
||||||
|
@ -14,12 +14,9 @@ export function NoteZap() {
|
|||||||
</button>
|
</button>
|
||||||
</Tooltip.Trigger>
|
</Tooltip.Trigger>
|
||||||
<Tooltip.Portal>
|
<Tooltip.Portal>
|
||||||
<Tooltip.Content
|
<Tooltip.Content className="-left-10 select-none rounded-md border-t border-zinc-600/50 bg-zinc-700 px-3.5 py-1.5 text-sm leading-none text-zinc-100 will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade">
|
||||||
className="-left-10 select-none rounded-md bg-zinc-800/80 px-3.5 py-1.5 text-sm leading-none text-zinc-100 backdrop-blur-lg will-change-[transform,opacity] data-[state=delayed-open]:data-[side=bottom]:animate-slideUpAndFade data-[state=delayed-open]:data-[side=left]:animate-slideRightAndFade data-[state=delayed-open]:data-[side=right]:animate-slideLeftAndFade data-[state=delayed-open]:data-[side=top]:animate-slideDownAndFade"
|
|
||||||
sideOffset={5}
|
|
||||||
>
|
|
||||||
Tip
|
Tip
|
||||||
<Tooltip.Arrow className="fill-zinc-800/80 backdrop-blur-lg" />
|
<Tooltip.Arrow className="fill-zinc-700" />
|
||||||
</Tooltip.Content>
|
</Tooltip.Content>
|
||||||
</Tooltip.Portal>
|
</Tooltip.Portal>
|
||||||
</Tooltip.Root>
|
</Tooltip.Root>
|
||||||
|
@ -65,7 +65,7 @@ export const MentionNote = memo(function MentionNote({ id }: { id: string }) {
|
|||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{data.content.parsed.length > 200
|
{data?.content?.parsed?.length > 200
|
||||||
? data.content.parsed.substring(0, 200) + '...'
|
? data.content.parsed.substring(0, 200) + '...'
|
||||||
: data.content.parsed}
|
: data.content.parsed}
|
||||||
</ReactMarkdown>
|
</ReactMarkdown>
|
||||||
|
@ -2,7 +2,7 @@ import { Popover, Transition } from '@headlessui/react';
|
|||||||
import { Fragment } from 'react';
|
import { Fragment } from 'react';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
import { ChevronDownIcon, VerticalDotsIcon } from '@shared/icons';
|
import { VerticalDotsIcon } from '@shared/icons';
|
||||||
import { Image } from '@shared/image';
|
import { Image } from '@shared/image';
|
||||||
|
|
||||||
import { DEFAULT_AVATAR } from '@stores/constants';
|
import { DEFAULT_AVATAR } from '@stores/constants';
|
||||||
|
17
src/utils/types.d.ts
vendored
17
src/utils/types.d.ts
vendored
@ -5,6 +5,23 @@ export interface LumeEvent extends NDKEvent {
|
|||||||
parent_id: string;
|
parent_id: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Account {
|
||||||
|
id: number;
|
||||||
|
npub: string;
|
||||||
|
pubkey: string;
|
||||||
|
privkey: string;
|
||||||
|
follows: string[] | string;
|
||||||
|
is_active: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Block {
|
||||||
|
id: string;
|
||||||
|
account_id: number;
|
||||||
|
kind: number;
|
||||||
|
title: string;
|
||||||
|
content: string;
|
||||||
|
}
|
||||||
|
|
||||||
export interface Chats {
|
export interface Chats {
|
||||||
id: string;
|
id: string;
|
||||||
event_id: string;
|
event_id: string;
|
||||||
|
Loading…
Reference in New Issue
Block a user