mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-18 05:51:34 +02:00
CAKE-356 | added isYatDevMode parameter to the yat_alert.dart; deleted yat_webview_page.dart and yat_view_model.dart; applied localization of Yat to the app
This commit is contained in:
-12
@@ -45,7 +45,6 @@ import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.da
|
||||
import 'package:cake_wallet/src/screens/wallet_keys/wallet_keys_page.dart';
|
||||
import 'package:cake_wallet/src/screens/exchange/exchange_page.dart';
|
||||
import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
|
||||
import 'package:cake_wallet/src/screens/yat/yat_webview_page.dart';
|
||||
import 'package:cake_wallet/store/dashboard/orders_store.dart';
|
||||
import 'package:cake_wallet/store/node_list_store.dart';
|
||||
import 'package:cake_wallet/store/secret_store.dart';
|
||||
@@ -99,7 +98,6 @@ import 'package:cake_wallet/view_model/wallet_list/wallet_list_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/wallet_restore_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/wallet_seed_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/yat_view_model.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
@@ -636,15 +634,5 @@ Future setup(
|
||||
param2: unspentCoinsListViewModel));
|
||||
});
|
||||
|
||||
getIt.registerFactory(() => YatViewModel(
|
||||
yatStore: getIt.get<YatStore>()
|
||||
));
|
||||
|
||||
getIt.registerFactoryParam<YatWebViewPage, YatMode, void>((YatMode mode, _) =>
|
||||
YatWebViewPage(
|
||||
mode: mode,
|
||||
yatViewModel: getIt.get<YatViewModel>(),
|
||||
));
|
||||
|
||||
_isSetupFinished = true;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:cake_wallet/bitcoin/unspent_coins_info.dart';
|
||||
import 'package:cake_wallet/entities/language_service.dart';
|
||||
import 'package:cake_wallet/buy/order.dart';
|
||||
@@ -205,10 +204,8 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
|
||||
try {
|
||||
final uri = await getInitialUri();
|
||||
if (uri == null) {
|
||||
print('Error: no initial uri');
|
||||
return;
|
||||
}
|
||||
print('got initial uri: $uri');
|
||||
if (!mounted) return;
|
||||
_fetchEmojiFromUri(uri, yatStore);
|
||||
} catch (e) {
|
||||
@@ -221,7 +218,6 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
|
||||
if (!kIsWeb) {
|
||||
stream = getUriLinksStream().listen((Uri uri) {
|
||||
if (!mounted) return;
|
||||
print('got uri: $uri');
|
||||
_fetchEmojiFromUri(uri, yatStore);
|
||||
}, onError: (Object error) {
|
||||
if (!mounted) return;
|
||||
@@ -285,53 +281,3 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/*class App extends StatelessWidget {
|
||||
App() {
|
||||
SystemChrome.setPreferredOrientations(
|
||||
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Observer(builder: (BuildContext context) {
|
||||
final settingsStore = getIt.get<AppStore>().settingsStore;
|
||||
final statusBarColor = Colors.transparent;
|
||||
final authenticationStore = getIt.get<AuthenticationStore>();
|
||||
final initialRoute =
|
||||
authenticationStore.state == AuthenticationState.denied
|
||||
? Routes.disclaimer
|
||||
: Routes.login;
|
||||
final currentTheme = settingsStore.currentTheme;
|
||||
final statusBarBrightness = currentTheme.type == ThemeType.dark
|
||||
? Brightness.light
|
||||
: Brightness.dark;
|
||||
final statusBarIconBrightness = currentTheme.type == ThemeType.dark
|
||||
? Brightness.light
|
||||
: Brightness.dark;
|
||||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
|
||||
statusBarColor: statusBarColor,
|
||||
statusBarBrightness: statusBarBrightness,
|
||||
statusBarIconBrightness: statusBarIconBrightness));
|
||||
|
||||
return Root(
|
||||
authenticationStore: authenticationStore,
|
||||
navigatorKey: navigatorKey,
|
||||
child: MaterialApp(
|
||||
navigatorKey: navigatorKey,
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: settingsStore.theme,
|
||||
localizationsDelegates: [
|
||||
S.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
],
|
||||
supportedLocales: S.delegate.supportedLocales,
|
||||
locale: Locale(settingsStore.languageCode),
|
||||
onGenerateRoute: (settings) => Router.createRoute(settings),
|
||||
initialRoute: initialRoute,
|
||||
));
|
||||
});
|
||||
}
|
||||
}*/
|
||||
|
||||
@@ -13,7 +13,6 @@ import 'package:cake_wallet/src/screens/seed/pre_seed_page.dart';
|
||||
import 'package:cake_wallet/src/screens/support/support_page.dart';
|
||||
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_details_page.dart';
|
||||
import 'package:cake_wallet/src/screens/unspent_coins/unspent_coins_list_page.dart';
|
||||
import 'package:cake_wallet/src/screens/yat/yat_webview_page.dart';
|
||||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/view_model/buy/buy_view_model.dart';
|
||||
import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
|
||||
@@ -380,11 +379,6 @@ Route<dynamic> createRoute(RouteSettings settings) {
|
||||
getIt.get<UnspentCoinsDetailsPage>(
|
||||
param1: args));
|
||||
|
||||
case Routes.yat:
|
||||
return MaterialPageRoute<void>(
|
||||
builder: (_) =>
|
||||
getIt.get<YatWebViewPage>(param1: settings.arguments as YatMode));
|
||||
|
||||
default:
|
||||
return MaterialPageRoute<void>(
|
||||
builder: (_) => Scaffold(
|
||||
|
||||
@@ -57,5 +57,4 @@ class Routes {
|
||||
static const buyWebView = '/buy_web_view';
|
||||
static const unspentCoinsList = '/unspent_coins_list';
|
||||
static const unspentCoinsDetails = '/unspent_coins_details';
|
||||
static const yat = '/yat';
|
||||
}
|
||||
@@ -150,7 +150,7 @@ class QRWidget extends StatelessWidget {
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'Yat Address',
|
||||
S.of(context).yat_address,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 13,
|
||||
|
||||
@@ -18,8 +18,8 @@ void showAddressAlert(BuildContext context, ParsedAddress parsedAddress) async {
|
||||
content = S.of(context).openalias_alert_content(parsedAddress.name);
|
||||
break;
|
||||
case ParseFrom.yatRecord:
|
||||
title = 'Address detected';
|
||||
content = 'This address is from ${parsedAddress.name} on Yat';
|
||||
title = S.of(context).address_detected;
|
||||
content = S.of(context).address_from_yat(parsedAddress.name);
|
||||
break;
|
||||
case ParseFrom.notParsed:
|
||||
return;
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/src/screens/yat/widgets/yat_bar.dart';
|
||||
import 'package:cake_wallet/src/screens/yat/yat_webview_page.dart';
|
||||
import 'package:cake_wallet/src/widgets/primary_button.dart';
|
||||
import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
|
||||
class YatAlert extends StatelessWidget {
|
||||
YatAlert({this.isYatDevMode = false})
|
||||
: baseUrl = isYatDevMode ? _baseDevUrl : _baseReleaseUrl;
|
||||
|
||||
final bool isYatDevMode;
|
||||
final String baseUrl;
|
||||
static const aspectRatioImage = 1.133;
|
||||
static const _baseUrl = 'https://y.at';
|
||||
static const _signInSuffix = '/partner/CW/link';
|
||||
static const _baseDevUrl = 'https://yat.fyi';
|
||||
static const _baseReleaseUrl = 'https://y.at';
|
||||
static const _signInSuffix = '/partner/CW/link-email';
|
||||
static const _createSuffix = '/create';
|
||||
final image = Image.asset('assets/images/yat_crypto.png');
|
||||
|
||||
@@ -42,7 +47,7 @@ class YatAlert extends StatelessWidget {
|
||||
child: Column(
|
||||
children: [
|
||||
Text(
|
||||
'Send and receive crypto more easily with Yat',
|
||||
S.of(context).yat_alert_title,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 24,
|
||||
@@ -55,7 +60,7 @@ class YatAlert extends StatelessWidget {
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 20),
|
||||
child: Text(
|
||||
'Cake Wallet users can now send and receive all their favorite currencies with a one-of-a-kind emoji-based username.',
|
||||
S.of(context).yat_alert_content,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
@@ -76,7 +81,7 @@ class YatAlert extends StatelessWidget {
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
PrimaryIconButton(
|
||||
text: 'Get your Yat',
|
||||
text: S.of(context).get_your_yat,
|
||||
textColor: Colors.white,
|
||||
color: Palette.protectiveBlue,
|
||||
borderColor: Palette.protectiveBlue,
|
||||
@@ -86,15 +91,13 @@ class YatAlert extends StatelessWidget {
|
||||
.arrow_up_right_square,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
onPressed: () {
|
||||
//Navigator.of(context)
|
||||
// .popAndPushNamed(Routes.yat, arguments: YatMode.create);
|
||||
final url = _baseUrl + _createSuffix;
|
||||
final url = baseUrl + _createSuffix;
|
||||
launch(url);
|
||||
}),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
child: PrimaryIconButton(
|
||||
text: 'Connect an existing Yat',
|
||||
text: S.of(context).connect_an_existing_yat,
|
||||
textColor: Colors.black,
|
||||
color: Palette.blueAlice,
|
||||
borderColor: Palette.blueAlice,
|
||||
@@ -104,9 +107,7 @@ class YatAlert extends StatelessWidget {
|
||||
.arrow_up_right_square,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
onPressed: () {
|
||||
//Navigator.of(context)
|
||||
// .popAndPushNamed(Routes.yat, arguments: YatMode.connect);
|
||||
final url = _baseUrl + _signInSuffix;
|
||||
final url = baseUrl + _signInSuffix;
|
||||
launch(url);
|
||||
})
|
||||
)
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'package:cake_wallet/palette.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/view_model/yat_view_model.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:webview_flutter/webview_flutter.dart';
|
||||
|
||||
enum YatMode {create, connect}
|
||||
|
||||
class YatWebViewPage extends BasePage {
|
||||
YatWebViewPage({this.yatViewModel, this.mode});
|
||||
|
||||
final YatMode mode;
|
||||
final YatViewModel yatViewModel;
|
||||
|
||||
@override
|
||||
String get title => 'Yat';
|
||||
|
||||
@override
|
||||
Color get backgroundDarkColor => Colors.white;
|
||||
|
||||
@override
|
||||
Color get titleColor => Palette.darkBlueCraiola;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) => YatWebViewPageBody(yatViewModel, mode);
|
||||
}
|
||||
|
||||
class YatWebViewPageBody extends StatefulWidget{
|
||||
YatWebViewPageBody(this.yatViewModel, this.mode);
|
||||
|
||||
final YatMode mode;
|
||||
final YatViewModel yatViewModel;
|
||||
|
||||
@override
|
||||
YatWebViewPageBodyState createState() =>
|
||||
YatWebViewPageBodyState(yatViewModel, mode);
|
||||
}
|
||||
|
||||
class YatWebViewPageBodyState extends State<YatWebViewPageBody> {
|
||||
YatWebViewPageBodyState(this.yatViewModel, this.mode) {
|
||||
switch (mode) {
|
||||
case YatMode.create:
|
||||
url = _baseUrl + _createSuffix;
|
||||
break;
|
||||
case YatMode.connect:
|
||||
url = _baseUrl + _signInSuffix;
|
||||
break;
|
||||
default:
|
||||
url = _baseUrl + _createSuffix;
|
||||
}
|
||||
}
|
||||
|
||||
static const _baseUrl = 'https://yat.fyi';
|
||||
static const _signInSuffix = '/sign-in';
|
||||
static const _createSuffix = '/create';
|
||||
|
||||
final YatMode mode;
|
||||
final YatViewModel yatViewModel;
|
||||
|
||||
String url;
|
||||
WebViewController _webViewController;
|
||||
GlobalKey _webViewkey;
|
||||
Timer _timer;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_webViewkey = GlobalKey();
|
||||
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
|
||||
WidgetsBinding.instance.addPostFrameCallback(_afterLayout);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_timer?.cancel();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return WebView(
|
||||
key: _webViewkey,
|
||||
initialUrl: url,
|
||||
javascriptMode: JavascriptMode.unrestricted,
|
||||
onWebViewCreated: (WebViewController controller) =>
|
||||
setState(() => _webViewController = controller));
|
||||
}
|
||||
|
||||
void _afterLayout(dynamic _) {
|
||||
_fetchYatInfo();
|
||||
}
|
||||
|
||||
void _fetchYatInfo() {
|
||||
final keyword = 'dashboard';
|
||||
_timer?.cancel();
|
||||
_timer = Timer.periodic(Duration(seconds: 1), (timer) async {
|
||||
|
||||
try {
|
||||
if (_webViewController == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final url = await _webViewController.currentUrl();
|
||||
print('URL = $url');
|
||||
if (url.contains(keyword)) {
|
||||
timer.cancel();
|
||||
await yatViewModel.fetchCartInfo();
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -157,12 +157,12 @@ abstract class SettingsViewModelBase with Store {
|
||||
],
|
||||
[
|
||||
RegularListItem(
|
||||
title: 'Manage Yats',
|
||||
title: S.current.manage_yats,
|
||||
handler: (BuildContext context) async {
|
||||
await showPopUp<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return YatAlert();
|
||||
return YatAlert(isYatDevMode: true);
|
||||
});
|
||||
},
|
||||
),
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
import 'package:cake_wallet/store/yat_store.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'dart:convert';
|
||||
import 'package:cake_wallet/yat/yat_exception.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:cake_wallet/.secrets.g.dart' as secrets;
|
||||
|
||||
part 'yat_view_model.g.dart';
|
||||
|
||||
class YatViewModel = YatViewModelBase with _$YatViewModel;
|
||||
|
||||
abstract class YatViewModelBase with Store {
|
||||
YatViewModelBase({@required this.yatStore});
|
||||
|
||||
final YatStore yatStore;
|
||||
|
||||
Future<void> fetchCartInfo() async {
|
||||
final url = 'https://a.y.at/cart';
|
||||
final _apiKey = secrets.yatApiToken;
|
||||
|
||||
final response = await get(
|
||||
url,
|
||||
headers: {
|
||||
'Accept':'*/*',
|
||||
'X-Api-Key': _apiKey
|
||||
}
|
||||
);
|
||||
|
||||
print('RESPONSE = ${response.body.toString()}');
|
||||
|
||||
/*if (response.statusCode != 200) {
|
||||
throw YatException(text: response.body.toString());
|
||||
}
|
||||
|
||||
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
|
||||
yatStore.yatAddress = responseJSON[''] as String;*/ // FIXME
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user