mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-17 01:44:19 +01:00
add webapps and bugfix
This commit is contained in:
@@ -117,6 +117,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
MessageLookupByLibrary.simpleMessage("Open in a New Tab"),
|
MessageLookupByLibrary.simpleMessage("Open in a New Tab"),
|
||||||
"Open_with_Incognito_Mode":
|
"Open_with_Incognito_Mode":
|
||||||
MessageLookupByLibrary.simpleMessage("Open with Incognito Mode"),
|
MessageLookupByLibrary.simpleMessage("Open with Incognito Mode"),
|
||||||
|
"Others": MessageLookupByLibrary.simpleMessage("Others"),
|
||||||
"Pendding_connect_remote_apps": MessageLookupByLibrary.simpleMessage(
|
"Pendding_connect_remote_apps": MessageLookupByLibrary.simpleMessage(
|
||||||
"Pendding connect remote apps"),
|
"Pendding connect remote apps"),
|
||||||
"Photos": MessageLookupByLibrary.simpleMessage("Photos"),
|
"Photos": MessageLookupByLibrary.simpleMessage("Photos"),
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ class MessageLookup extends MessageLookupByLibrary {
|
|||||||
"Open_in_a_New_Tab": MessageLookupByLibrary.simpleMessage("打开新标签"),
|
"Open_in_a_New_Tab": MessageLookupByLibrary.simpleMessage("打开新标签"),
|
||||||
"Open_with_Incognito_Mode":
|
"Open_with_Incognito_Mode":
|
||||||
MessageLookupByLibrary.simpleMessage("无痕模式打开"),
|
MessageLookupByLibrary.simpleMessage("无痕模式打开"),
|
||||||
|
"Others": MessageLookupByLibrary.simpleMessage("其他"),
|
||||||
"Pendding_connect_remote_apps":
|
"Pendding_connect_remote_apps":
|
||||||
MessageLookupByLibrary.simpleMessage("待链接的远程应用"),
|
MessageLookupByLibrary.simpleMessage("待链接的远程应用"),
|
||||||
"Photos": MessageLookupByLibrary.simpleMessage("照片"),
|
"Photos": MessageLookupByLibrary.simpleMessage("照片"),
|
||||||
|
|||||||
@@ -1119,6 +1119,16 @@ class S {
|
|||||||
args: [],
|
args: [],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// `Others`
|
||||||
|
String get Others {
|
||||||
|
return Intl.message(
|
||||||
|
'Others',
|
||||||
|
name: 'Others',
|
||||||
|
desc: '',
|
||||||
|
args: [],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AppLocalizationDelegate extends LocalizationsDelegate<S> {
|
class AppLocalizationDelegate extends LocalizationsDelegate<S> {
|
||||||
|
|||||||
@@ -105,5 +105,6 @@
|
|||||||
"Zaps": "Zaps",
|
"Zaps": "Zaps",
|
||||||
"Marketplaces": "Marketplaces",
|
"Marketplaces": "Marketplaces",
|
||||||
"All": "All",
|
"All": "All",
|
||||||
"Web_APPs": "Web APPs"
|
"Web_APPs": "Web APPs",
|
||||||
|
"Others": "Others"
|
||||||
}
|
}
|
||||||
@@ -105,5 +105,6 @@
|
|||||||
"Zaps": "Zaps",
|
"Zaps": "Zaps",
|
||||||
"Marketplaces": "市场",
|
"Marketplaces": "市场",
|
||||||
"All": "全部",
|
"All": "全部",
|
||||||
"Web_APPs": "网页应用"
|
"Web_APPs": "网页应用",
|
||||||
|
"Others": "其他"
|
||||||
}
|
}
|
||||||
@@ -30,9 +30,11 @@ class _WebAppItemComponent extends State<WebAppItemComponent> {
|
|||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (widget.onTap != null) {
|
if (widget.onTap != null) {
|
||||||
|
print("onTap!!");
|
||||||
widget.onTap!(widget.item);
|
widget.onTap!(widget.item);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
behavior: HitTestBehavior.translucent,
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: const EdgeInsets.only(
|
padding: const EdgeInsets.only(
|
||||||
left: Base.BASE_PADDING,
|
left: Base.BASE_PADDING,
|
||||||
|
|||||||
@@ -6,5 +6,6 @@ class WebAppTypes {
|
|||||||
static String PHOTOS = "photos";
|
static String PHOTOS = "photos";
|
||||||
static String STREAMING = "streaming";
|
static String STREAMING = "streaming";
|
||||||
static String ZAPS = "zaps";
|
static String ZAPS = "zaps";
|
||||||
static String Marketplaces = "marketplaces";
|
static String MARKETPLACES = "marketplaces";
|
||||||
|
static String OTHERS = "others";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,8 @@ class WebAppsRouterState extends CustState<WebAppsRouter> {
|
|||||||
typeEnums.add(EnumObj(WebAppTypes.PHOTOS, s.Photos));
|
typeEnums.add(EnumObj(WebAppTypes.PHOTOS, s.Photos));
|
||||||
typeEnums.add(EnumObj(WebAppTypes.STREAMING, s.Streaming));
|
typeEnums.add(EnumObj(WebAppTypes.STREAMING, s.Streaming));
|
||||||
typeEnums.add(EnumObj(WebAppTypes.ZAPS, s.Zaps));
|
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<Widget> list = [];
|
List<Widget> list = [];
|
||||||
@@ -126,7 +127,7 @@ class WebAppsRouterState extends CustState<WebAppsRouter> {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (var item in showItems) {
|
for (var item in showItems) {
|
||||||
itemWidgetList.add(WebAppItemComponent(item));
|
itemWidgetList.add(WebAppItemComponent(item, onTap: onTap));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,8 +159,8 @@ class WebAppsRouterState extends CustState<WebAppsRouter> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onTap(WebAppItem item) {
|
void onTap(WebAppItem item) {
|
||||||
RouterUtil.back(context);
|
|
||||||
webProvider.addTab(url: item.link);
|
webProvider.addTab(url: item.link);
|
||||||
|
RouterUtil.back(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -283,6 +284,250 @@ class WebAppsRouterState extends CustState<WebAppsRouter> {
|
|||||||
[WebAppTypes.NOTES],
|
[WebAppTypes.NOTES],
|
||||||
image: "https://nowser.nostrmo.com/images/apps/iris.png",
|
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<Map> jsonList = [];
|
// List<Map> jsonList = [];
|
||||||
// for (var item in items) {
|
// for (var item in items) {
|
||||||
@@ -290,7 +535,7 @@ class WebAppsRouterState extends CustState<WebAppsRouter> {
|
|||||||
// }
|
// }
|
||||||
// log(jsonEncode(jsonList));
|
// log(jsonEncode(jsonList));
|
||||||
|
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user