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