diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 3685070..a7e2c0e 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -117,6 +117,7 @@ class MessageLookup extends MessageLookupByLibrary { MessageLookupByLibrary.simpleMessage("Open in a New Tab"), "Open_with_Incognito_Mode": MessageLookupByLibrary.simpleMessage("Open with Incognito Mode"), + "Others": MessageLookupByLibrary.simpleMessage("Others"), "Pendding_connect_remote_apps": MessageLookupByLibrary.simpleMessage( "Pendding connect remote apps"), "Photos": MessageLookupByLibrary.simpleMessage("Photos"), diff --git a/lib/generated/intl/messages_zh.dart b/lib/generated/intl/messages_zh.dart index e448b0a..aacaf07 100644 --- a/lib/generated/intl/messages_zh.dart +++ b/lib/generated/intl/messages_zh.dart @@ -101,6 +101,7 @@ class MessageLookup extends MessageLookupByLibrary { "Open_in_a_New_Tab": MessageLookupByLibrary.simpleMessage("打开新标签"), "Open_with_Incognito_Mode": MessageLookupByLibrary.simpleMessage("无痕模式打开"), + "Others": MessageLookupByLibrary.simpleMessage("其他"), "Pendding_connect_remote_apps": MessageLookupByLibrary.simpleMessage("待链接的远程应用"), "Photos": MessageLookupByLibrary.simpleMessage("照片"), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 8672719..6b23392 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -1119,6 +1119,16 @@ class S { args: [], ); } + + /// `Others` + String get Others { + return Intl.message( + 'Others', + name: 'Others', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index cd2439e..3560d14 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -105,5 +105,6 @@ "Zaps": "Zaps", "Marketplaces": "Marketplaces", "All": "All", - "Web_APPs": "Web APPs" + "Web_APPs": "Web APPs", + "Others": "Others" } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 5d741d0..24f2eba 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -105,5 +105,6 @@ "Zaps": "Zaps", "Marketplaces": "市场", "All": "全部", - "Web_APPs": "网页应用" + "Web_APPs": "网页应用", + "Others": "其他" } \ No newline at end of file diff --git a/lib/router/web_apps/web_app_item_component.dart b/lib/router/web_apps/web_app_item_component.dart index e63fe9e..5339f44 100644 --- a/lib/router/web_apps/web_app_item_component.dart +++ b/lib/router/web_apps/web_app_item_component.dart @@ -30,9 +30,11 @@ class _WebAppItemComponent extends State { return GestureDetector( onTap: () { if (widget.onTap != null) { + print("onTap!!"); widget.onTap!(widget.item); } }, + behavior: HitTestBehavior.translucent, child: Container( padding: const EdgeInsets.only( left: Base.BASE_PADDING, diff --git a/lib/router/web_apps/web_app_types.dart b/lib/router/web_apps/web_app_types.dart index 5643d9b..f54c2dc 100644 --- a/lib/router/web_apps/web_app_types.dart +++ b/lib/router/web_apps/web_app_types.dart @@ -6,5 +6,6 @@ class WebAppTypes { static String PHOTOS = "photos"; static String STREAMING = "streaming"; static String ZAPS = "zaps"; - static String Marketplaces = "marketplaces"; + static String MARKETPLACES = "marketplaces"; + static String OTHERS = "others"; } diff --git a/lib/router/web_apps/web_apps_router.dart b/lib/router/web_apps/web_apps_router.dart index b557b7a..b646745 100644 --- a/lib/router/web_apps/web_apps_router.dart +++ b/lib/router/web_apps/web_apps_router.dart @@ -47,7 +47,8 @@ class WebAppsRouterState extends CustState { typeEnums.add(EnumObj(WebAppTypes.PHOTOS, s.Photos)); typeEnums.add(EnumObj(WebAppTypes.STREAMING, s.Streaming)); typeEnums.add(EnumObj(WebAppTypes.ZAPS, s.Zaps)); - typeEnums.add(EnumObj(WebAppTypes.Marketplaces, s.Marketplaces)); + typeEnums.add(EnumObj(WebAppTypes.MARKETPLACES, s.Marketplaces)); + typeEnums.add(EnumObj(WebAppTypes.OTHERS, s.Others)); } List list = []; @@ -126,7 +127,7 @@ class WebAppsRouterState extends CustState { } } else { for (var item in showItems) { - itemWidgetList.add(WebAppItemComponent(item)); + itemWidgetList.add(WebAppItemComponent(item, onTap: onTap)); } } @@ -158,8 +159,8 @@ class WebAppsRouterState extends CustState { } void onTap(WebAppItem item) { - RouterUtil.back(context); webProvider.addTab(url: item.link); + RouterUtil.back(context); } @override @@ -283,6 +284,250 @@ class WebAppsRouterState extends CustState { [WebAppTypes.NOTES], image: "https://nowser.nostrmo.com/images/apps/iris.png", )); + items.add(WebAppItem( + "https://iris.to/", + "Nostter", + "Calm social client", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/nostter.png", + )); + items.add(WebAppItem( + "https://www.getwired.app/", + "Wired", + "An anonymous-first agora", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/wired.png", + )); + items.add(WebAppItem( + "https://emojito.meme/", + "Emojito", + "Create custom emoji sets", + [WebAppTypes.TOOLS], + image: "https://nowser.nostrmo.com/images/apps/emojito.png", + )); + items.add(WebAppItem( + "https://formstr.app/", + "Formstr", + "Create and share forms", + [WebAppTypes.TOOLS], + image: "https://nowser.nostrmo.com/images/apps/formstr.png", + )); + items.add(WebAppItem( + "https://coracle.social/", + "Coracle", + "Nostr, the easy way.", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/coracle.png", + )); + items.add(WebAppItem( + "https://badges.page/", + "Badges", + "A manager for your nostr badges", + [WebAppTypes.TOOLS], + image: "https://nowser.nostrmo.com/images/apps/badges.png", + )); + items.add(WebAppItem( + "https://olas.app/", + "Olas", + "Olas is a client for publishing and looking at photos", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/olas.png", + )); + items.add(WebAppItem( + "https://nsec.app/", + "Nsec", + "Use Nostr apps safely", + [WebAppTypes.TOOLS], + image: "https://nowser.nostrmo.com/images/apps/nsec.png", + )); + items.add(WebAppItem( + "https://chachi.chat/", + "Nsec", + "A group chat and generic NIP-29 group posts client", + [WebAppTypes.GROUP_CHAT], + image: "https://nowser.nostrmo.com/images/apps/chachi.png", + )); + items.add(WebAppItem( + "https://oddbean.com/", + "Oddbean", + "Hacker News style client", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/oddbean.png", + )); + items.add(WebAppItem( + "https://getalby.com/", + "Alby", + "Your bitcoin and nostr companion for the web", + [WebAppTypes.ZAPS], + image: "https://nowser.nostrmo.com/images/apps/alby.png", + )); + items.add(WebAppItem( + "https://jumble.social/", + "Jumble", + "Jumble is a client focused on browsing relay feeds", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/jumble.png", + )); + items.add(WebAppItem( + "https://yakihonne.com/", + "Yakihonne", + "Publish and curate long-form content", + [WebAppTypes.NOTES, WebAppTypes.LONG_FORM], + image: "https://nowser.nostrmo.com/images/apps/yakihonne.png", + )); + items.add(WebAppItem( + "https://flycat.club/", + "Flycat", + "Explore Nostr universe and long form content", + [WebAppTypes.LONG_FORM], + image: "https://nowser.nostrmo.com/images/apps/flycat.png", + )); + items.add(WebAppItem( + "https://zap.stream/", + "Zapstream", + "Live stream and zap", + [WebAppTypes.STREAMING], + image: "https://nowser.nostrmo.com/images/apps/zapstream.png", + )); + items.add(WebAppItem( + "https://bouquet.slidestr.net/", + "Bouquet", + "A personal manager for Blossom media servers", + [WebAppTypes.PHOTOS], + image: "https://nowser.nostrmo.com/images/apps/bouquet.png", + )); + items.add(WebAppItem( + "https://shopstr.store/", + "Shopstr", + "Buy and sell for sats over nostr", + [WebAppTypes.MARKETPLACES], + image: "https://nowser.nostrmo.com/images/apps/shopstr.png", + )); + items.add(WebAppItem( + "https://ostrich.work/", + "Ostrich Work", + "Job Board over Nostr", + [WebAppTypes.OTHERS], + image: "https://nowser.nostrmo.com/images/apps/ostrich.png", + )); + items.add(WebAppItem( + "https://web.nostrmo.com/", + "Nostrmo", + "A nostr client for Web, iOS, Android, MacOS and Windows.", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/nostrmo.png", + )); + items.add(WebAppItem( + "https://alphaama.com/", + "alphaama", + "just a nostr fucking client, CLI + GUI", + [WebAppTypes.NOTES], + )); + items.add(WebAppItem( + "https://pinstr.app/", + "Pinstr", + "Like Pinterest but on nostr with zaps", + [WebAppTypes.PHOTOS], + image: "https://nowser.nostrmo.com/images/apps/pinstr.png", + )); + items.add(WebAppItem( + "https://wikifreedia.xyz/", + "Wikifreedia", + "a client for the wikipedia idea built on Nostr", + [WebAppTypes.OTHERS], + image: "https://nowser.nostrmo.com/images/apps/wikifreedia.png", + )); + items.add(WebAppItem( + "https://go.yondar.me/", + "Yondar", + "The social map", + [WebAppTypes.OTHERS], + image: "https://nowser.nostrmo.com/images/apps/yondar.png", + )); + items.add(WebAppItem( + "https://nostr.band/", + "Nostr Band", + "Nostr data and statistics advanced search.", + [WebAppTypes.OTHERS], + image: "https://nowser.nostrmo.com/images/apps/nostrband.png", + )); + items.add(WebAppItem( + "https://nostrudel.ninja/", + "noStrudel", + "The jack of all trades", + [WebAppTypes.NOTES], + image: "https://nowser.nostrmo.com/images/apps/nostrudel.png", + )); + items.add(WebAppItem( + "https://nostrnests.com/", + "Nests", + "Audio rooms", + [WebAppTypes.STREAMING], + image: "https://nowser.nostrmo.com/images/apps/nostrnests.png", + )); + items.add(WebAppItem( + "https://wikistr.com/", + "Wikistr", + "A NIP-54 'wiki' client with multi-article view", + [WebAppTypes.OTHERS], + image: "https://nowser.nostrmo.com/images/apps/wikistr.png", + )); + items.add(WebAppItem( + "https://slidestr.net/", + "Slidestr", + "Immersive media browsing", + [WebAppTypes.PHOTOS], + image: "https://nowser.nostrmo.com/images/apps/slidestr.png", + )); + items.add(WebAppItem( + "https://www.coolr.chat/", + "Coolr", + "A minimalist, IRC like chat app built on Nostr. Fast and temporary.", + [WebAppTypes.GROUP_CHAT], + image: "https://nowser.nostrmo.com/images/apps/coolr.png", + )); + items.add(WebAppItem( + "https://sendbox.nostrmo.com/", + "Sendbox", + "This is a tool to help you delayed publish your nostr event.", + [WebAppTypes.TOOLS], + )); + items.add(WebAppItem( + "https://www.coinos.io/", + "Coinos", + "The easiest way to get started with bitcoin. A free web wallet and payment page for everyone.", + [WebAppTypes.ZAPS], + )); + items.add(WebAppItem( + "https://shipyard.pub/", + "Shipyard", + "Schedule notes", + [WebAppTypes.TOOLS], + )); + items.add(WebAppItem( + "https://npub.pro/", + "NpubPro", + "Beautiful nostr-based websites for creators.Best way to share your work outside of nostr.", + [WebAppTypes.LONG_FORM], + )); + items.add(WebAppItem( + "https://write.nostr.com/", + "Write Nostr", + "A tool to send Markdown long-format or blog post notes using NIP-23.", + [WebAppTypes.LONG_FORM], + )); + items.add(WebAppItem( + "https://nosli.vercel.app/", + "Nosli", + "Nosli helps you create a curated list of posts on nostr.", + [WebAppTypes.LONG_FORM], + )); + items.add(WebAppItem( + "https://primal.net/", + "Primal", + "A Multi-platform client", + [WebAppTypes.NOTES], + )); // List jsonList = []; // for (var item in items) { @@ -290,7 +535,7 @@ class WebAppsRouterState extends CustState { // } // log(jsonEncode(jsonList)); - setState(() {}); + // setState(() {}); } } }