chore: follow-up #236

This commit is contained in:
2024-10-07 15:12:30 +07:00
parent 090a815f99
commit 8c6aea8050
7 changed files with 83 additions and 81 deletions

View File

@@ -11,10 +11,10 @@
{ {
"default": true, "default": true,
"official": true, "official": true,
"label": "columns_gallery", "label": "Launchpad",
"name": "Columns Gallery", "name": "Launchpad",
"description": "Expand your experiences.", "description": "Expand your experiences.",
"url": "/columns/gallery", "url": "/columns/launchpad",
"picture": "" "picture": ""
}, },
{ {

View File

@@ -1,2 +1,3 @@
wss://relay.damus.io, wss://relay.damus.io,
wss://relay.nostr.net, wss://relay.nostr.net,
wss://nos.lol,

View File

@@ -60,8 +60,8 @@ const ColumnsLayoutOnboardingLazyImport = createFileRoute(
const ColumnsLayoutNotificationLazyImport = createFileRoute( const ColumnsLayoutNotificationLazyImport = createFileRoute(
'/columns/_layout/notification', '/columns/_layout/notification',
)() )()
const ColumnsLayoutGalleryLazyImport = createFileRoute( const ColumnsLayoutLaunchpadLazyImport = createFileRoute(
'/columns/_layout/gallery', '/columns/_layout/launchpad',
)() )()
const ColumnsLayoutUsersIdLazyImport = createFileRoute( const ColumnsLayoutUsersIdLazyImport = createFileRoute(
'/columns/_layout/users/$id', '/columns/_layout/users/$id',
@@ -199,11 +199,13 @@ const ColumnsLayoutNotificationLazyRoute =
import('./routes/columns/_layout/notification.lazy').then((d) => d.Route), import('./routes/columns/_layout/notification.lazy').then((d) => d.Route),
) )
const ColumnsLayoutGalleryLazyRoute = ColumnsLayoutGalleryLazyImport.update({ const ColumnsLayoutLaunchpadLazyRoute = ColumnsLayoutLaunchpadLazyImport.update(
path: '/gallery', {
getParentRoute: () => ColumnsLayoutRoute, path: '/launchpad',
} as any).lazy(() => getParentRoute: () => ColumnsLayoutRoute,
import('./routes/columns/_layout/gallery.lazy').then((d) => d.Route), } as any,
).lazy(() =>
import('./routes/columns/_layout/launchpad.lazy').then((d) => d.Route),
) )
const ColumnsLayoutStoriesRoute = ColumnsLayoutStoriesImport.update({ const ColumnsLayoutStoriesRoute = ColumnsLayoutStoriesImport.update({
@@ -525,11 +527,11 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof ColumnsLayoutStoriesImport preLoaderRoute: typeof ColumnsLayoutStoriesImport
parentRoute: typeof ColumnsLayoutImport parentRoute: typeof ColumnsLayoutImport
} }
'/columns/_layout/gallery': { '/columns/_layout/launchpad': {
id: '/columns/_layout/gallery' id: '/columns/_layout/launchpad'
path: '/gallery' path: '/launchpad'
fullPath: '/columns/gallery' fullPath: '/columns/launchpad'
preLoaderRoute: typeof ColumnsLayoutGalleryLazyImport preLoaderRoute: typeof ColumnsLayoutLaunchpadLazyImport
parentRoute: typeof ColumnsLayoutImport parentRoute: typeof ColumnsLayoutImport
} }
'/columns/_layout/notification': { '/columns/_layout/notification': {
@@ -682,7 +684,7 @@ interface ColumnsLayoutRouteChildren {
ColumnsLayoutGlobalRoute: typeof ColumnsLayoutGlobalRoute ColumnsLayoutGlobalRoute: typeof ColumnsLayoutGlobalRoute
ColumnsLayoutNewsfeedRoute: typeof ColumnsLayoutNewsfeedRoute ColumnsLayoutNewsfeedRoute: typeof ColumnsLayoutNewsfeedRoute
ColumnsLayoutStoriesRoute: typeof ColumnsLayoutStoriesRoute ColumnsLayoutStoriesRoute: typeof ColumnsLayoutStoriesRoute
ColumnsLayoutGalleryLazyRoute: typeof ColumnsLayoutGalleryLazyRoute ColumnsLayoutLaunchpadLazyRoute: typeof ColumnsLayoutLaunchpadLazyRoute
ColumnsLayoutNotificationLazyRoute: typeof ColumnsLayoutNotificationLazyRoute ColumnsLayoutNotificationLazyRoute: typeof ColumnsLayoutNotificationLazyRoute
ColumnsLayoutOnboardingLazyRoute: typeof ColumnsLayoutOnboardingLazyRoute ColumnsLayoutOnboardingLazyRoute: typeof ColumnsLayoutOnboardingLazyRoute
ColumnsLayoutSearchLazyRoute: typeof ColumnsLayoutSearchLazyRoute ColumnsLayoutSearchLazyRoute: typeof ColumnsLayoutSearchLazyRoute
@@ -700,7 +702,7 @@ const ColumnsLayoutRouteChildren: ColumnsLayoutRouteChildren = {
ColumnsLayoutGlobalRoute: ColumnsLayoutGlobalRoute, ColumnsLayoutGlobalRoute: ColumnsLayoutGlobalRoute,
ColumnsLayoutNewsfeedRoute: ColumnsLayoutNewsfeedRoute, ColumnsLayoutNewsfeedRoute: ColumnsLayoutNewsfeedRoute,
ColumnsLayoutStoriesRoute: ColumnsLayoutStoriesRoute, ColumnsLayoutStoriesRoute: ColumnsLayoutStoriesRoute,
ColumnsLayoutGalleryLazyRoute: ColumnsLayoutGalleryLazyRoute, ColumnsLayoutLaunchpadLazyRoute: ColumnsLayoutLaunchpadLazyRoute,
ColumnsLayoutNotificationLazyRoute: ColumnsLayoutNotificationLazyRoute, ColumnsLayoutNotificationLazyRoute: ColumnsLayoutNotificationLazyRoute,
ColumnsLayoutOnboardingLazyRoute: ColumnsLayoutOnboardingLazyRoute, ColumnsLayoutOnboardingLazyRoute: ColumnsLayoutOnboardingLazyRoute,
ColumnsLayoutSearchLazyRoute: ColumnsLayoutSearchLazyRoute, ColumnsLayoutSearchLazyRoute: ColumnsLayoutSearchLazyRoute,
@@ -753,7 +755,7 @@ export interface FileRoutesByFullPath {
'/columns/global': typeof ColumnsLayoutGlobalRoute '/columns/global': typeof ColumnsLayoutGlobalRoute
'/columns/newsfeed': typeof ColumnsLayoutNewsfeedRoute '/columns/newsfeed': typeof ColumnsLayoutNewsfeedRoute
'/columns/stories': typeof ColumnsLayoutStoriesRoute '/columns/stories': typeof ColumnsLayoutStoriesRoute
'/columns/gallery': typeof ColumnsLayoutGalleryLazyRoute '/columns/launchpad': typeof ColumnsLayoutLaunchpadLazyRoute
'/columns/notification': typeof ColumnsLayoutNotificationLazyRoute '/columns/notification': typeof ColumnsLayoutNotificationLazyRoute
'/columns/onboarding': typeof ColumnsLayoutOnboardingLazyRoute '/columns/onboarding': typeof ColumnsLayoutOnboardingLazyRoute
'/columns/search': typeof ColumnsLayoutSearchLazyRoute '/columns/search': typeof ColumnsLayoutSearchLazyRoute
@@ -793,7 +795,7 @@ export interface FileRoutesByTo {
'/columns/global': typeof ColumnsLayoutGlobalRoute '/columns/global': typeof ColumnsLayoutGlobalRoute
'/columns/newsfeed': typeof ColumnsLayoutNewsfeedRoute '/columns/newsfeed': typeof ColumnsLayoutNewsfeedRoute
'/columns/stories': typeof ColumnsLayoutStoriesRoute '/columns/stories': typeof ColumnsLayoutStoriesRoute
'/columns/gallery': typeof ColumnsLayoutGalleryLazyRoute '/columns/launchpad': typeof ColumnsLayoutLaunchpadLazyRoute
'/columns/notification': typeof ColumnsLayoutNotificationLazyRoute '/columns/notification': typeof ColumnsLayoutNotificationLazyRoute
'/columns/onboarding': typeof ColumnsLayoutOnboardingLazyRoute '/columns/onboarding': typeof ColumnsLayoutOnboardingLazyRoute
'/columns/search': typeof ColumnsLayoutSearchLazyRoute '/columns/search': typeof ColumnsLayoutSearchLazyRoute
@@ -837,7 +839,7 @@ export interface FileRoutesById {
'/columns/_layout/global': typeof ColumnsLayoutGlobalRoute '/columns/_layout/global': typeof ColumnsLayoutGlobalRoute
'/columns/_layout/newsfeed': typeof ColumnsLayoutNewsfeedRoute '/columns/_layout/newsfeed': typeof ColumnsLayoutNewsfeedRoute
'/columns/_layout/stories': typeof ColumnsLayoutStoriesRoute '/columns/_layout/stories': typeof ColumnsLayoutStoriesRoute
'/columns/_layout/gallery': typeof ColumnsLayoutGalleryLazyRoute '/columns/_layout/launchpad': typeof ColumnsLayoutLaunchpadLazyRoute
'/columns/_layout/notification': typeof ColumnsLayoutNotificationLazyRoute '/columns/_layout/notification': typeof ColumnsLayoutNotificationLazyRoute
'/columns/_layout/onboarding': typeof ColumnsLayoutOnboardingLazyRoute '/columns/_layout/onboarding': typeof ColumnsLayoutOnboardingLazyRoute
'/columns/_layout/search': typeof ColumnsLayoutSearchLazyRoute '/columns/_layout/search': typeof ColumnsLayoutSearchLazyRoute
@@ -879,7 +881,7 @@ export interface FileRouteTypes {
| '/columns/global' | '/columns/global'
| '/columns/newsfeed' | '/columns/newsfeed'
| '/columns/stories' | '/columns/stories'
| '/columns/gallery' | '/columns/launchpad'
| '/columns/notification' | '/columns/notification'
| '/columns/onboarding' | '/columns/onboarding'
| '/columns/search' | '/columns/search'
@@ -918,7 +920,7 @@ export interface FileRouteTypes {
| '/columns/global' | '/columns/global'
| '/columns/newsfeed' | '/columns/newsfeed'
| '/columns/stories' | '/columns/stories'
| '/columns/gallery' | '/columns/launchpad'
| '/columns/notification' | '/columns/notification'
| '/columns/onboarding' | '/columns/onboarding'
| '/columns/search' | '/columns/search'
@@ -960,7 +962,7 @@ export interface FileRouteTypes {
| '/columns/_layout/global' | '/columns/_layout/global'
| '/columns/_layout/newsfeed' | '/columns/_layout/newsfeed'
| '/columns/_layout/stories' | '/columns/_layout/stories'
| '/columns/_layout/gallery' | '/columns/_layout/launchpad'
| '/columns/_layout/notification' | '/columns/_layout/notification'
| '/columns/_layout/onboarding' | '/columns/_layout/onboarding'
| '/columns/_layout/search' | '/columns/_layout/search'
@@ -1091,7 +1093,7 @@ export const routeTree = rootRoute
"/columns/_layout/global", "/columns/_layout/global",
"/columns/_layout/newsfeed", "/columns/_layout/newsfeed",
"/columns/_layout/stories", "/columns/_layout/stories",
"/columns/_layout/gallery", "/columns/_layout/launchpad",
"/columns/_layout/notification", "/columns/_layout/notification",
"/columns/_layout/onboarding", "/columns/_layout/onboarding",
"/columns/_layout/search", "/columns/_layout/search",
@@ -1173,8 +1175,8 @@ export const routeTree = rootRoute
"filePath": "columns/_layout/stories.tsx", "filePath": "columns/_layout/stories.tsx",
"parent": "/columns/_layout" "parent": "/columns/_layout"
}, },
"/columns/_layout/gallery": { "/columns/_layout/launchpad": {
"filePath": "columns/_layout/gallery.lazy.tsx", "filePath": "columns/_layout/launchpad.lazy.tsx",
"parent": "/columns/_layout" "parent": "/columns/_layout"
}, },
"/columns/_layout/notification": { "/columns/_layout/notification": {

View File

@@ -217,16 +217,16 @@ function ManageButton() {
const menuItems = await Promise.all([ const menuItems = await Promise.all([
MenuItem.new({ MenuItem.new({
text: "Open Columns Gallery", text: "Open Launchpad",
action: () => LumeWindow.openColumnsGallery(), action: () => LumeWindow.openColumnsGallery(),
}), }),
PredefinedMenuItem.new({ item: "Separator" }), PredefinedMenuItem.new({ item: "Separator" }),
MenuItem.new({ MenuItem.new({
text: "Add local feeds", text: "Open Newsfeed",
action: () => LumeWindow.openLocalFeeds(), action: () => LumeWindow.openLocalFeeds(),
}), }),
MenuItem.new({ MenuItem.new({
text: "Add notification", text: "Open Notification",
action: () => LumeWindow.openNotification(), action: () => LumeWindow.openNotification(),
}), }),
]); ]);

View File

@@ -10,7 +10,7 @@ import { resolveResource } from "@tauri-apps/api/path";
import { readTextFile } from "@tauri-apps/plugin-fs"; import { readTextFile } from "@tauri-apps/plugin-fs";
import { useCallback } from "react"; import { useCallback } from "react";
export const Route = createLazyFileRoute("/columns/_layout/gallery")({ export const Route = createLazyFileRoute("/columns/_layout/launchpad")({
component: Screen, component: Screen,
}); });
@@ -116,7 +116,8 @@ function MyGroups() {
const renderItem = useCallback( const renderItem = useCallback(
(item: NostrEvent) => { (item: NostrEvent) => {
const name = item.tags.filter((tag) => tag[0] === "d")[0][1] ?? "unnamed"; const name =
item.tags.find((tag) => tag[0] === "title")?.[1] || "Unnamed";
return ( return (
<div <div
@@ -225,7 +226,8 @@ function MyInterests() {
const renderItem = useCallback( const renderItem = useCallback(
(item: NostrEvent) => { (item: NostrEvent) => {
const name = item.tags.filter((tag) => tag[0] === "d")[0][1] ?? "unnamed"; const name =
item.tags.find((tag) => tag[0] === "title")?.[1] || "Unnamed";
return ( return (
<div <div

View File

@@ -10,7 +10,7 @@ import { useState, useTransition } from "react";
const TOPICS = [ const TOPICS = [
{ {
title: "Popular", title: "Popular hashtags",
content: [ content: [
"#nostr", "#nostr",
"#introductions", "#introductions",
@@ -119,6 +119,24 @@ function Screen() {
<ScrollArea.Viewport className="bg-white dark:bg-black h-full p-3"> <ScrollArea.Viewport className="bg-white dark:bg-black h-full p-3">
<div className="mb-3 flex flex-col gap-2"> <div className="mb-3 flex flex-col gap-2">
<span className="text-sm font-semibold">Added</span> <span className="text-sm font-semibold">Added</span>
<div className="flex gap-2">
<input
name="hashtag"
placeholder="#nostr"
onChange={(e) => setHashtag(e.target.value)}
onKeyDown={(event) => {
if (event.key === "Enter") addHashtag();
}}
className="w-full px-3 text-sm border-none rounded-lg h-9 bg-neutral-100 dark:bg-neutral-900 placeholder:text-neutral-600 focus:border-neutral-500 focus:ring-0 dark:placeholder:text-neutral-400"
/>
<button
type="button"
onClick={() => addHashtag()}
className="inline-flex items-center justify-center text-neutral-500 rounded-lg size-9 bg-neutral-200 dark:bg-neutral-800 shrink-0 hover:bg-blue-500 hover:text-white"
>
<Plus className="size-5" />
</button>
</div>
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-2">
{hashtags.length ? ( {hashtags.length ? (
hashtags.map((item: string) => ( hashtags.map((item: string) => (
@@ -139,50 +157,29 @@ function Screen() {
)} )}
</div> </div>
</div> </div>
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-4">
<span className="text-sm font-semibold">Hashtags</span> {TOPICS.map((topic) => (
<div className="flex gap-2"> <div key={topic.title} className="flex flex-col gap-2">
<input <div className="text-sm font-semibold">{topic.title}</div>
name="hashtag" <div className="flex flex-wrap gap-2">
placeholder="#nostr" {topic.content.map((item) => (
onChange={(e) => setHashtag(e.target.value)} <button
onKeyDown={(event) => { key={item}
if (event.key === "Enter") addHashtag(); type="button"
}} onClick={() => toggleHashtag(item)}
className="w-full px-3 text-sm border-none rounded-lg h-9 bg-neutral-100 dark:bg-neutral-900 placeholder:text-neutral-600 focus:border-neutral-500 focus:ring-0 dark:placeholder:text-neutral-400" className={cn(
/> "text-sm p-2 rounded-full",
<button hashtags.includes(item)
type="button" ? "bg-blue-500 text-white"
onClick={() => addHashtag()} : "bg-neutral-100 dark:bg-neutral-900",
className="inline-flex items-center justify-center text-neutral-500 rounded-lg size-9 bg-neutral-200 dark:bg-neutral-800 shrink-0 hover:bg-blue-500 hover:text-white" )}
> >
<Plus className="size-5" /> {item}
</button> </button>
</div> ))}
<div className="mt-2 flex flex-col gap-4">
{TOPICS.map((topic) => (
<div key={topic.title} className="flex flex-col gap-2">
<div className="text-sm font-semibold">{topic.title}</div>
<div className="flex flex-wrap gap-2">
{topic.content.map((item) => (
<button
key={item}
type="button"
onClick={() => toggleHashtag(item)}
className={cn(
"text-sm p-2 rounded-full",
hashtags.includes(item)
? "bg-blue-500 text-white"
: "bg-neutral-100 dark:bg-neutral-900",
)}
>
{item}
</button>
))}
</div>
</div> </div>
))} </div>
</div> ))}
</div> </div>
</ScrollArea.Viewport> </ScrollArea.Viewport>
<ScrollArea.Scrollbar <ScrollArea.Scrollbar

View File

@@ -15,9 +15,9 @@ export const LumeWindow = {
await getCurrentWindow().emit("columns", { await getCurrentWindow().emit("columns", {
type: "add", type: "add",
column: { column: {
label: "columns_gallery", label: "launchpad",
name: "Columns Gallery", name: "Launchpad",
url: "/columns/gallery", url: "/columns/launchpad",
}, },
}); });
}, },
@@ -25,8 +25,8 @@ export const LumeWindow = {
await getCurrentWindow().emit("columns", { await getCurrentWindow().emit("columns", {
type: "add", type: "add",
column: { column: {
label: "local_feeds", label: "newsfeed",
name: "Local Feeds", name: "Newsfeed",
url: "/columns/newsfeed", url: "/columns/newsfeed",
}, },
}); });