mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-17 09:54:19 +01:00
change some ui
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:nostr_sdk/utils/string_util.dart';
|
||||
import 'package:nowser/component/image_component.dart';
|
||||
import 'package:nowser/const/app_type.dart';
|
||||
import 'package:nowser/const/base.dart';
|
||||
import 'package:nowser/data/app.dart';
|
||||
@@ -57,9 +58,15 @@ class _AuthAppInfoComponent extends State<AuthAppInfoComponent> {
|
||||
Container(
|
||||
margin:
|
||||
const EdgeInsets.only(right: Base.BASE_PADDING_HALF),
|
||||
child: Icon(
|
||||
child: StringUtil.isBlank(widget.app.image)
|
||||
? const Icon(
|
||||
Icons.image,
|
||||
size: 46,
|
||||
)
|
||||
: ImageComponent(
|
||||
imageUrl: widget.app.image!,
|
||||
width: 40,
|
||||
height: 40,
|
||||
),
|
||||
),
|
||||
Column(
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:nostr_sdk/utils/string_util.dart';
|
||||
import 'package:nowser/component/auth_dialog/auth_dialog_base_componnet.dart';
|
||||
import 'package:nowser/const/auth_result.dart';
|
||||
import 'package:nowser/const/auth_type.dart';
|
||||
import 'package:nowser/data/app.dart';
|
||||
import 'package:nowser/util/router_util.dart';
|
||||
|
||||
@@ -56,10 +57,35 @@ class _AuthDialog extends State<AuthDialog> {
|
||||
);
|
||||
var hintColor = themeData.hintColor;
|
||||
|
||||
var appName = widget.app.name;
|
||||
if (StringUtil.isNotBlank(widget.app.code)) {
|
||||
appName = widget.app.code;
|
||||
}
|
||||
// handle this title and des with widget.authType
|
||||
String authTitle = "Sign Event";
|
||||
String authDes = "Allow web.nostrmo.com to sign a authenticate event";
|
||||
authTitle = "AuthType ${widget.authType}";
|
||||
String authDes = "Allow $appName to ";
|
||||
if (widget.authType == AuthType.GET_PUBLIC_KEY) {
|
||||
authTitle = "Get Public Key";
|
||||
authDes += "get public key";
|
||||
} else if (widget.authType == AuthType.SIGN_EVENT) {
|
||||
authTitle = "Sign Event";
|
||||
authDes += "sign a ${widget.eventKind} event";
|
||||
} else if (widget.authType == AuthType.GET_RELAYS) {
|
||||
authTitle = "Get Relays";
|
||||
authDes += "get relays";
|
||||
} else if (widget.authType == AuthType.NIP04_ENCRYPT) {
|
||||
authTitle = "Encrypt (NIP-04)";
|
||||
authDes += "Encrypt (NIP-04)";
|
||||
} else if (widget.authType == AuthType.NIP04_DECRYPT) {
|
||||
authTitle = "Decrypt (NIP-04)";
|
||||
authDes += "Decrypt (NIP-04)";
|
||||
} else if (widget.authType == AuthType.NIP44_ENCRYPT) {
|
||||
authTitle = "Encrypt (NIP-44)";
|
||||
authDes += "Encrypt (NIP-44)";
|
||||
} else if (widget.authType == AuthType.NIP44_DECRYPT) {
|
||||
authTitle = "Decrypt (NIP-44)";
|
||||
authDes += "Decrypt (NIP-44)";
|
||||
}
|
||||
|
||||
List<Widget> list = [];
|
||||
list.add(Container(
|
||||
@@ -124,6 +150,7 @@ class _AuthDialog extends State<AuthDialog> {
|
||||
app: widget.app,
|
||||
title: authTitle,
|
||||
onConfirm: onConfirm,
|
||||
pubkeyReadonly: true,
|
||||
child: child,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -21,12 +21,15 @@ class AuthDialogBaseComponnet extends StatefulWidget {
|
||||
|
||||
Function(String)? onPubkeyChange;
|
||||
|
||||
bool pubkeyReadonly;
|
||||
|
||||
AuthDialogBaseComponnet({
|
||||
required this.app,
|
||||
required this.title,
|
||||
required this.child,
|
||||
required this.onConfirm,
|
||||
this.onPubkeyChange,
|
||||
this.pubkeyReadonly = false,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -67,7 +70,10 @@ class _AuthDialog extends State<AuthDialogBaseComponnet> {
|
||||
|
||||
return DropdownButton<String>(
|
||||
items: items,
|
||||
onChanged: (String? value) {
|
||||
isExpanded: true,
|
||||
onChanged: widget.pubkeyReadonly
|
||||
? null
|
||||
: (String? value) {
|
||||
if (StringUtil.isNotBlank(value)) {
|
||||
widget.app.pubkey = value;
|
||||
setState(() {});
|
||||
@@ -93,7 +99,7 @@ class _AuthDialog extends State<AuthDialogBaseComponnet> {
|
||||
),
|
||||
Expanded(
|
||||
child: Container(
|
||||
margin: EdgeInsets.only(right: Base.BASE_PADDING_HALF),
|
||||
margin: const EdgeInsets.only(right: Base.BASE_PADDING_HALF),
|
||||
alignment: Alignment.centerRight,
|
||||
child: keyWidget,
|
||||
),
|
||||
|
||||
@@ -27,6 +27,8 @@ class _WebHomeComponent extends State<WebHomeComponent> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
textEditingController.text = "https://nostr.build/login/";
|
||||
// textEditingController.text = "https://web.nostrmo.com/";
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -204,7 +204,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_getPublicKey",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_getPublicKey $jsMsg");
|
||||
print("Nowser_JS_getPublicKey $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg);
|
||||
var resultId = jsonObj["resultId"];
|
||||
|
||||
@@ -217,6 +217,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
() {
|
||||
nip07Reject(resultId, "Forbid");
|
||||
}, (app, signer) {
|
||||
print("confirm get pubkey");
|
||||
var pubkey = app.pubkey;
|
||||
var script = "window.nostr.callback(\"$resultId\", \"$pubkey\");";
|
||||
controller.evaluateJavascript(source: script);
|
||||
@@ -227,7 +228,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_signEvent",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_signEvent $jsMsg");
|
||||
print("Nowser_JS_signEvent $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg);
|
||||
var resultId = jsonObj["resultId"];
|
||||
var content = jsonObj["msg"];
|
||||
@@ -242,7 +243,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
var eventKind = eventObj["kind"];
|
||||
if (eventKind is int) {
|
||||
checkPermission(context, AppType.WEB, code, AuthType.SIGN_EVENT,
|
||||
eventKind: eventKind, () {
|
||||
eventKind: eventKind, authDetail: content, () {
|
||||
nip07Reject(resultId, "Forbid");
|
||||
}, (app, signer) async {
|
||||
var tags = eventObj["tags"];
|
||||
@@ -270,7 +271,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_getRelays",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_getRelays $jsMsg");
|
||||
print("Nowser_JS_getRelays $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg);
|
||||
var resultId = jsonObj["resultId"];
|
||||
|
||||
@@ -303,7 +304,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_nip04_encrypt",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_nip04_encrypt $jsMsg");
|
||||
print("Nowser_JS_nip04_encrypt $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg);
|
||||
var resultId = jsonObj["resultId"];
|
||||
var msg = jsonObj["msg"];
|
||||
@@ -335,7 +336,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_nip04_decrypt",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_nip04_decrypt $jsMsg");
|
||||
print("Nowser_JS_nip04_decrypt $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg.message);
|
||||
var resultId = jsonObj["resultId"];
|
||||
var msg = jsonObj["msg"];
|
||||
@@ -370,7 +371,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_nip44_encrypt",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_nip04_encrypt $jsMsg");
|
||||
print("Nowser_JS_nip44_encrypt $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg);
|
||||
var resultId = jsonObj["resultId"];
|
||||
var msg = jsonObj["msg"];
|
||||
@@ -402,7 +403,7 @@ class _WebViewComponent extends State<WebViewComponent>
|
||||
handlerName: "Nowser_JS_nip44_decrypt",
|
||||
callback: (jsMsgs) async {
|
||||
var jsMsg = jsMsgs[0];
|
||||
// print("Nowser_JS_nip04_decrypt $jsMsg");
|
||||
print("Nowser_JS_nip44_decrypt $jsMsg");
|
||||
var jsonObj = jsonDecode(jsMsg.message);
|
||||
var resultId = jsonObj["resultId"];
|
||||
var msg = jsonObj["msg"];
|
||||
|
||||
@@ -94,6 +94,9 @@ class _MyApp extends State<MyApp> {
|
||||
ListenableProvider<KeyProvider>.value(
|
||||
value: keyProvider,
|
||||
),
|
||||
ListenableProvider<AppProvider>.value(
|
||||
value: appProvider,
|
||||
),
|
||||
],
|
||||
child: MaterialApp(
|
||||
builder: BotToastInit(),
|
||||
|
||||
@@ -9,6 +9,8 @@ import '../data/app.dart';
|
||||
class AppProvider extends ChangeNotifier {
|
||||
List<App> _list = [];
|
||||
|
||||
List<App> get appList => _list;
|
||||
|
||||
Map<String, Map<String, int>> appPermissions = {};
|
||||
|
||||
Future<void> reload() async {
|
||||
|
||||
@@ -105,8 +105,10 @@ class _IndexWebComponent extends State<IndexWebComponent> {
|
||||
)),
|
||||
wrapBottomBtn(const Icon(Icons.space_dashboard),
|
||||
left: 8, right: 8),
|
||||
wrapBottomBtn(const Icon(Icons.segment),
|
||||
left: 8, right: 13),
|
||||
wrapBottomBtn(const Icon(Icons.segment), left: 8, right: 13,
|
||||
onTap: () {
|
||||
RouterUtil.router(context, RouterPath.ME);
|
||||
}),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:nowser/component/user/user_name_component.dart';
|
||||
import 'package:nowser/component/user/user_pic_component.dart';
|
||||
import 'package:nowser/const/base.dart';
|
||||
import 'package:nowser/const/router_path.dart';
|
||||
import 'package:nowser/provider/app_provider.dart';
|
||||
import 'package:nowser/provider/key_provider.dart';
|
||||
import 'package:nowser/router/me/me_router_log_item_component.dart';
|
||||
import 'package:nowser/router/me/me_router_web_item_component.dart';
|
||||
@@ -25,6 +26,7 @@ class _MeRouter extends State<MeRouter> {
|
||||
Widget build(BuildContext context) {
|
||||
var mediaQueryData = MediaQuery.of(context);
|
||||
var themeData = Theme.of(context);
|
||||
var _appProvider = Provider.of<AppProvider>(context);
|
||||
|
||||
var listWidgetMargin = const EdgeInsets.only(
|
||||
top: Base.BASE_PADDING,
|
||||
@@ -145,20 +147,17 @@ class _MeRouter extends State<MeRouter> {
|
||||
),
|
||||
);
|
||||
|
||||
List<Widget> appList = [];
|
||||
appList.add(Container(
|
||||
child: MeRouterAppItemComponent(),
|
||||
List<Widget> appWidgetList = [];
|
||||
var appList = _appProvider.appList;
|
||||
var length = appList.length;
|
||||
for (var i = 0; i < length && i < 3; i++) {
|
||||
var app = appList[i];
|
||||
appWidgetList.add(Container(
|
||||
child: MeRouterAppItemComponent(app),
|
||||
));
|
||||
appList.add(Divider());
|
||||
appList.add(Container(
|
||||
child: MeRouterAppItemComponent(),
|
||||
));
|
||||
appList.add(Divider());
|
||||
appList.add(Container(
|
||||
child: MeRouterAppItemComponent(),
|
||||
));
|
||||
appList.add(Divider());
|
||||
appList.add(Container(
|
||||
appWidgetList.add(Divider());
|
||||
}
|
||||
appWidgetList.add(Container(
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
"Show more",
|
||||
@@ -178,7 +177,7 @@ class _MeRouter extends State<MeRouter> {
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: appList,
|
||||
children: appWidgetList,
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:nostr_sdk/utils/string_util.dart';
|
||||
import 'package:nowser/component/app/app_type_component.dart';
|
||||
import 'package:nowser/component/image_component.dart';
|
||||
import 'package:nowser/const/app_type.dart';
|
||||
import 'package:nowser/data/app.dart';
|
||||
|
||||
import '../../const/base.dart';
|
||||
|
||||
class MeRouterAppItemComponent extends StatefulWidget {
|
||||
App app;
|
||||
|
||||
MeRouterAppItemComponent(this.app);
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() {
|
||||
return _MeRouterAppItemComponent();
|
||||
@@ -15,20 +22,31 @@ class _MeRouterAppItemComponent extends State<MeRouterAppItemComponent> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var imageWidget = Container(
|
||||
margin: EdgeInsets.only(
|
||||
margin: const EdgeInsets.only(
|
||||
left: Base.BASE_PADDING_HALF,
|
||||
right: Base.BASE_PADDING,
|
||||
),
|
||||
child: Icon(Icons.image),
|
||||
child: StringUtil.isBlank(widget.app.image)
|
||||
? const Icon(Icons.image)
|
||||
: ImageComponent(
|
||||
imageUrl: widget.app.image!,
|
||||
width: 40,
|
||||
height: 40,
|
||||
),
|
||||
);
|
||||
|
||||
var appName = widget.app.name;
|
||||
if (StringUtil.isBlank(widget.app.code)) {
|
||||
appName = widget.app.code;
|
||||
}
|
||||
|
||||
var titleWidget = Container(
|
||||
margin: EdgeInsets.only(right: Base.BASE_PADDING),
|
||||
child: Text("Title APP"),
|
||||
margin: const EdgeInsets.only(right: Base.BASE_PADDING),
|
||||
child: Text(appName!),
|
||||
);
|
||||
|
||||
var typeWidget = Container(
|
||||
child: AppTypeComponent(AppType.WEB),
|
||||
child: AppTypeComponent(widget.app.appType!),
|
||||
);
|
||||
|
||||
var rightIconWidget = Container(
|
||||
|
||||
Reference in New Issue
Block a user