diff --git a/LabelStoreMax/CHANGELOG.md b/LabelStoreMax/CHANGELOG.md index 12240aa..feb65bc 100644 --- a/LabelStoreMax/CHANGELOG.md +++ b/LabelStoreMax/CHANGELOG.md @@ -1,3 +1,12 @@ +## [5.5.0] - 2021-12-17 + +* Change font from WooSignal dashboard +* Change font colors from WooSignal dashboard +* Add social media links from WooSignal dashboard +* Notification stubs added to boot.dart +* Upgrade WooSignal API to v3.0.0 +* Pubspec.yaml dependency updates + ## [5.4.0] - 2021-12-10 * New localization keys added diff --git a/LabelStoreMax/README.md b/LabelStoreMax/README.md index 43d0df4..7833a82 100644 --- a/LabelStoreMax/README.md +++ b/LabelStoreMax/README.md @@ -4,7 +4,7 @@ # WooCommerce App: Label StoreMax -### Label StoreMax - v5.4.0 +### Label StoreMax - v5.5.0 [Official WooSignal WooCommerce App](https://woosignal.com) diff --git a/LabelStoreMax/lang/de.json b/LabelStoreMax/lang/de.json index 5eced5f..c655290 100644 --- a/LabelStoreMax/lang/de.json +++ b/LabelStoreMax/lang/de.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "Bitte geben Sie eine gültige Rechnungs-E-Mail-Adresse ein", "Please enter a valid shipping email": "Bitte geben Sie eine gültige Versand-E-Mail ein", "Free postage": "Portofrei", - "PROCESSING": "WIRD BEARBEITET" + "PROCESSING": "WIRD BEARBEITET", + "Social": "Sozial" } \ No newline at end of file diff --git a/LabelStoreMax/lang/en.json b/LabelStoreMax/lang/en.json index e1485d0..3f36bc3 100644 --- a/LabelStoreMax/lang/en.json +++ b/LabelStoreMax/lang/en.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "Please enter a valid billing email", "Please enter a valid shipping email": "Please enter a valid shipping email", "Free postage": "Free postage", - "PROCESSING": "PROCESSING" + "PROCESSING": "PROCESSING", + "Social": "Social" } \ No newline at end of file diff --git a/LabelStoreMax/lang/es.json b/LabelStoreMax/lang/es.json index a29c0b2..480a5c7 100644 --- a/LabelStoreMax/lang/es.json +++ b/LabelStoreMax/lang/es.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "Ingrese un correo electrónico de facturación válido", "Please enter a valid shipping email": "Ingrese un correo electrónico de envío válido", "Free postage": "Gastos de envío gratis", - "PROCESSING": "PROCESANDO" + "PROCESSING": "PROCESANDO", + "Social": "Social" } \ No newline at end of file diff --git a/LabelStoreMax/lang/fr.json b/LabelStoreMax/lang/fr.json index 4edea95..a8002df 100644 --- a/LabelStoreMax/lang/fr.json +++ b/LabelStoreMax/lang/fr.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "Veuillez saisir une adresse e-mail de facturation valide", "Please enter a valid shipping email": "Veuillez saisir un e-mail de livraison valide", "Free postage": "Sans frais de port", - "PROCESSING": "EN TRAITEMENT" + "PROCESSING": "EN TRAITEMENT", + "Social": "Social" } \ No newline at end of file diff --git a/LabelStoreMax/lang/hi.json b/LabelStoreMax/lang/hi.json index f2a95d9..87dcd1f 100644 --- a/LabelStoreMax/lang/hi.json +++ b/LabelStoreMax/lang/hi.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "krpaya ek maany biling eemel darj karen", "Please enter a valid shipping email": "krpaya ek maany shiping eemel darj karen", "Free postage": "mupht daak", - "PROCESSING": "prasanskaran" + "PROCESSING": "prasanskaran", + "Social": "saamaajik" } \ No newline at end of file diff --git a/LabelStoreMax/lang/it.json b/LabelStoreMax/lang/it.json index 04f3418..6cdf235 100644 --- a/LabelStoreMax/lang/it.json +++ b/LabelStoreMax/lang/it.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "Si prega di inserire un'e-mail di fatturazione valida", "Please enter a valid shipping email": "Si prega di inserire un'e-mail di spedizione valida", "Free postage": "Spedizione gratuita", - "PROCESSING": "IN LAVORAZIONE" + "PROCESSING": "IN LAVORAZIONE", + "Social": "Sociale" } \ No newline at end of file diff --git a/LabelStoreMax/lang/pt.json b/LabelStoreMax/lang/pt.json index f67416f..d34bdeb 100644 --- a/LabelStoreMax/lang/pt.json +++ b/LabelStoreMax/lang/pt.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "Por favor, insira um e-mail de faturamento válido", "Please enter a valid shipping email": "Por favor, insira um e-mail de envio válido", "Free postage": "Postagem grátis", - "PROCESSING": "EM PROCESSAMENTO" + "PROCESSING": "EM PROCESSAMENTO", + "Social": "Social" } \ No newline at end of file diff --git a/LabelStoreMax/lang/zh.json b/LabelStoreMax/lang/zh.json index c0523cf..33f961e 100644 --- a/LabelStoreMax/lang/zh.json +++ b/LabelStoreMax/lang/zh.json @@ -190,5 +190,6 @@ "Please enter a valid billing email": "请输入有效的结算电子邮件", "Please enter a valid shipping email": "请输入有效的送货电子邮件", "Free postage": "免邮费", - "PROCESSING": "加工" + "PROCESSING": "加工", + "Social": "社会的" } \ No newline at end of file diff --git a/LabelStoreMax/lib/app/controllers/account_order_detail_controller.dart b/LabelStoreMax/lib/app/controllers/account_order_detail_controller.dart index 807c60b..4fac185 100644 --- a/LabelStoreMax/lib/app/controllers/account_order_detail_controller.dart +++ b/LabelStoreMax/lib/app/controllers/account_order_detail_controller.dart @@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart'; class AccountOrderDetailController extends Controller { @override - construct(BuildContext context) {} + construct(BuildContext context) { + super.construct(context); + } } diff --git a/LabelStoreMax/lib/app/controllers/browse_category_controller.dart b/LabelStoreMax/lib/app/controllers/browse_category_controller.dart index 4ef91d9..0bbfcc0 100644 --- a/LabelStoreMax/lib/app/controllers/browse_category_controller.dart +++ b/LabelStoreMax/lib/app/controllers/browse_category_controller.dart @@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart'; class BrowseCategoryController extends Controller { @override - construct(BuildContext context) {} + construct(BuildContext context) { + super.construct(context); + } } diff --git a/LabelStoreMax/lib/app/controllers/browse_search_controller.dart b/LabelStoreMax/lib/app/controllers/browse_search_controller.dart index 445338a..e2e0bd7 100644 --- a/LabelStoreMax/lib/app/controllers/browse_search_controller.dart +++ b/LabelStoreMax/lib/app/controllers/browse_search_controller.dart @@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart'; class BrowseSearchController extends Controller { @override - construct(BuildContext context) {} + construct(BuildContext context) { + super.construct(context); + } } diff --git a/LabelStoreMax/lib/app/controllers/checkout_status_controller.dart b/LabelStoreMax/lib/app/controllers/checkout_status_controller.dart index 16e5058..a98fef7 100644 --- a/LabelStoreMax/lib/app/controllers/checkout_status_controller.dart +++ b/LabelStoreMax/lib/app/controllers/checkout_status_controller.dart @@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart'; class CheckoutStatusController extends Controller { @override - construct(BuildContext context) {} + construct(BuildContext context) { + super.construct(context); + } } diff --git a/LabelStoreMax/lib/app/controllers/controller.dart b/LabelStoreMax/lib/app/controllers/controller.dart index d3f0e05..0ee065f 100644 --- a/LabelStoreMax/lib/app/controllers/controller.dart +++ b/LabelStoreMax/lib/app/controllers/controller.dart @@ -8,10 +8,16 @@ // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +import 'package:flutter/material.dart'; import 'package:nylo_support/controllers/controller.dart'; /// Base Controller for the Nylo -/// See more on controllers here - https://nylo.dev/docs/1.x/controllers +/// See more on controllers here - https://nylo.dev/docs/2.x/controllers class Controller extends BaseController { Controller(); + + @override + construct(BuildContext context) { + super.construct(context); + } } diff --git a/LabelStoreMax/lib/app/controllers/product_detail_controller.dart b/LabelStoreMax/lib/app/controllers/product_detail_controller.dart index 8e2c73c..cf15f02 100644 --- a/LabelStoreMax/lib/app/controllers/product_detail_controller.dart +++ b/LabelStoreMax/lib/app/controllers/product_detail_controller.dart @@ -16,7 +16,9 @@ import 'package:flutter/widgets.dart'; class ProductDetailController extends Controller { @override - construct(BuildContext context) {} + construct(BuildContext context) { + super.construct(context); + } viewExternalProduct(Product product) { if (product.externalUrl != null && product.externalUrl.isNotEmpty) { diff --git a/LabelStoreMax/lib/app/controllers/product_image_viewer_controller.dart b/LabelStoreMax/lib/app/controllers/product_image_viewer_controller.dart index 8837864..a596851 100644 --- a/LabelStoreMax/lib/app/controllers/product_image_viewer_controller.dart +++ b/LabelStoreMax/lib/app/controllers/product_image_viewer_controller.dart @@ -13,5 +13,7 @@ import 'package:flutter/widgets.dart'; class ProductImageViewerController extends Controller { @override - construct(BuildContext context) {} + construct(BuildContext context) { + super.construct(context); + } } diff --git a/LabelStoreMax/lib/bootstrap/app.dart b/LabelStoreMax/lib/bootstrap/app.dart index 7bcc0f3..2042eac 100644 --- a/LabelStoreMax/lib/bootstrap/app.dart +++ b/LabelStoreMax/lib/bootstrap/app.dart @@ -34,7 +34,7 @@ class AppBuild extends StatelessWidget { Key key, this.initialRoute, this.title, - @required this.locale, + this.locale, this.themeData, @required this.onGenerateRoute, this.navigatorKey, @@ -66,7 +66,7 @@ class AppBuild extends StatelessWidget { child: ThemeConsumer( child: Builder( builder: (themeContext) => ValueListenableBuilder( - valueListenable: ValueNotifier(locale), + valueListenable: ValueNotifier(locale ?? NyLocalization.instance.locale), builder: (context, Locale locale, _) => MaterialApp( navigatorKey: navigatorKey, themeMode: themeMode, diff --git a/LabelStoreMax/lib/bootstrap/boot.dart b/LabelStoreMax/lib/bootstrap/boot.dart new file mode 100644 index 0000000..1174ba2 --- /dev/null +++ b/LabelStoreMax/lib/bootstrap/boot.dart @@ -0,0 +1,76 @@ +// import 'package:firebase_core/firebase_core.dart'; +// import 'package:firebase_messaging/firebase_messaging.dart'; +// import 'package:flutter_app/firebase_options.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_app/bootstrap/app_helper.dart'; +import 'package:flutter_app/bootstrap/helpers.dart'; +import 'package:flutter_app/config/app_localization.dart'; +import 'package:nylo_framework/nylo_framework.dart'; +import 'package:woosignal/models/response/woosignal_app.dart'; +import 'package:woosignal/woosignal.dart'; +import 'package:wp_json_api/wp_json_api.dart'; + +/// boot application +Future boot() async { + + await SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + ]); + + await WooSignal.instance.init(appKey: getEnv('APP_KEY'), debugMode: getEnv('APP_DEBUG')); + + // Notifications + /// await Firebase.initializeApp( + /// options: DefaultFirebaseOptions.currentPlatform, + /// ); + /// + /// FirebaseMessaging messaging = FirebaseMessaging.instance; + /// + /// NotificationSettings settings = await messaging.requestPermission( + /// alert: true, + /// announcement: false, + /// badge: true, + /// carPlay: false, + /// criticalAlert: false, + /// provisional: false, + /// sound: true, + /// ); + /// + /// if (settings.authorizationStatus == AuthorizationStatus.authorized) { + /// String token = await messaging.getToken(); + /// WooSignal.instance.setFcmToken(token); + /// AppHelper.instance.fcmToken = token; + /// } + + // WooSignal Setup + WooSignalApp wooSignalApp = await appWooSignal((api) => api.getApp()); + Locale locale = Locale('en'); + + if (wooSignalApp != null) { + AppHelper.instance.appConfig = wooSignalApp; + + if (wooSignalApp.wpLoginEnabled == 1) { + WPJsonAPI.instance.initWith( + baseUrl: wooSignalApp.wpLoginBaseUrl, + shouldDebug: getEnv('APP_DEBUG'), + wpJsonPath: wooSignalApp.wpLoginWpApiPath, + ); + } + + if (getEnv('DEFAULT_LOCALE', defaultValue: null) == null && wooSignalApp.locale != null) { + locale = Locale(wooSignalApp.locale); + } else { + locale = Locale(envVal('DEFAULT_LOCALE', defaultValue: 'en')); + } + } + + /// NyLocalization + await NyLocalization.instance.init( + localeType: localeType, + languageCode: locale.languageCode, + languagesList: languagesList, + assetsDirectory: assetsDirectory, + valuesAsMap: valuesAsMap + ); +} \ No newline at end of file diff --git a/LabelStoreMax/lib/bootstrap/helpers.dart b/LabelStoreMax/lib/bootstrap/helpers.dart index 5e5a1b1..e4b8a0b 100644 --- a/LabelStoreMax/lib/bootstrap/helpers.dart +++ b/LabelStoreMax/lib/bootstrap/helpers.dart @@ -45,11 +45,7 @@ Future getUser() async => (await NyStorage.read(SharedKey.authUser, model: User())); appWooSignal(Function(WooSignal) api) async { - WooSignal wooSignal = await WooSignal.getInstance(config: { - "appKey": getEnv('APP_KEY'), - "debugMode": getEnv('APP_DEBUG', defaultValue: true) - }); - return await api(wooSignal); + return await api(WooSignal.instance); } /// helper to find correct color from the [context]. diff --git a/LabelStoreMax/lib/bootstrap/setup.dart b/LabelStoreMax/lib/bootstrap/setup.dart deleted file mode 100644 index eed7323..0000000 --- a/LabelStoreMax/lib/bootstrap/setup.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:flutter/services.dart'; - -/// boot application -Future boot() async { - - await SystemChrome.setPreferredOrientations([ - DeviceOrientation.portraitUp, - ]); - -} \ No newline at end of file diff --git a/LabelStoreMax/lib/config/app_currency.dart b/LabelStoreMax/lib/config/app_currency.dart index c9ef124..ede8603 100644 --- a/LabelStoreMax/lib/config/app_currency.dart +++ b/LabelStoreMax/lib/config/app_currency.dart @@ -3,7 +3,7 @@ | CURRENCY | | Configure which currency you want to use. -| Docs here: https://woosignal.com/docs/app/ios/label-storemax +| Docs here: https://woosignal.com/docs/app/label-storemax |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/config/app_font.dart b/LabelStoreMax/lib/config/app_font.dart index f7288d1..171c945 100644 --- a/LabelStoreMax/lib/config/app_font.dart +++ b/LabelStoreMax/lib/config/app_font.dart @@ -13,7 +13,7 @@ import 'package:google_fonts/google_fonts.dart'; |-------------------------------------------------------------------------- */ -final TextStyle appFont = GoogleFonts.poppins(); +TextStyle appFont = GoogleFonts.poppins(); // e.g. custom font in pubspec.yaml - https://flutter.dev/docs/cookbook/design/fonts // final TextStyle appThemeFont = TextStyle(fontFamily: "ZenTokyoZoo"); \ No newline at end of file diff --git a/LabelStoreMax/lib/config/app_payment_gateways.dart b/LabelStoreMax/lib/config/app_payment_gateways.dart index 3907872..86414fc 100644 --- a/LabelStoreMax/lib/config/app_payment_gateways.dart +++ b/LabelStoreMax/lib/config/app_payment_gateways.dart @@ -9,7 +9,7 @@ import 'package:flutter_app/bootstrap/helpers.dart'; | PAYMENT GATEWAYS | | Configure which payment gateways you want to use. -| Docs here: https://woosignal.com/docs/app/ios/label-storemax +| Docs here: https://woosignal.com/docs/app/label-storemax |-------------------------------------------------------------------------- */ diff --git a/LabelStoreMax/lib/main.dart b/LabelStoreMax/lib/main.dart index 4d7f6a7..ca2b071 100644 --- a/LabelStoreMax/lib/main.dart +++ b/LabelStoreMax/lib/main.dart @@ -1,52 +1,20 @@ import 'package:flutter/material.dart'; import 'package:flutter_app/bootstrap/app.dart'; import 'package:flutter_app/bootstrap/app_helper.dart'; -import 'package:flutter_app/bootstrap/helpers.dart'; -import 'package:flutter_app/bootstrap/setup.dart'; -import 'package:flutter_app/config/app_localization.dart'; +import 'package:flutter_app/bootstrap/boot.dart'; import 'package:flutter_app/routes/router.dart'; import 'package:nylo_framework/nylo_framework.dart'; -import 'package:woosignal/models/response/woosignal_app.dart'; -import 'package:wp_json_api/wp_json_api.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); Nylo nylo = await Nylo.init(router: appRouter(), setup: boot); - String initialRoute = '/no-connection'; - WooSignalApp wooSignalApp = await appWooSignal((api) => api.getApp()); - Locale locale; - - if (wooSignalApp != null) { - initialRoute = "/home"; - AppHelper.instance.appConfig = wooSignalApp; - AppHelper.instance.themeType = wooSignalApp.theme; - - if (wooSignalApp.wpLoginEnabled == 1) { - WPJsonAPI.instance.initWith( - baseUrl: wooSignalApp.wpLoginBaseUrl, - shouldDebug: (wooSignalApp.appDebug == 1), - wpJsonPath: wooSignalApp.wpLoginWpApiPath, - ); - } - - locale = Locale((getEnv('DEFAULT_LOCALE', defaultValue: null) == null && wooSignalApp.locale != null) ? wooSignalApp.locale : envVal('DEFAULT_LOCALE', defaultValue: 'en')); - } - - /// NyLocalization - await NyLocalization.instance.init( - localeType: localeType, - languageCode: locale != null ? locale.languageCode : Locale(getEnv('DEFAULT_LOCALE', defaultValue: 'en')), - languagesList: languagesList, - assetsDirectory: assetsDirectory, - valuesAsMap: valuesAsMap - ); + String initialRoute = AppHelper.instance.appConfig != null ? '/home' : '/no-connection'; runApp( AppBuild( navigatorKey: nylo.router.navigatorKey, onGenerateRoute: nylo.router.generator(), - locale: locale, initialRoute: initialRoute, debugShowCheckedModeBanner: false, ), diff --git a/LabelStoreMax/lib/resources/pages/account_register.dart b/LabelStoreMax/lib/resources/pages/account_register.dart index f6c9b1e..7215dcb 100644 --- a/LabelStoreMax/lib/resources/pages/account_register.dart +++ b/LabelStoreMax/lib/resources/pages/account_register.dart @@ -9,6 +9,8 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:flutter_app/app/models/user.dart'; import 'package:flutter_app/bootstrap/app_helper.dart'; @@ -18,7 +20,6 @@ import 'package:flutter_app/resources/widgets/buttons.dart'; import 'package:flutter_app/resources/widgets/safearea_widget.dart'; import 'package:flutter_app/resources/widgets/woosignal_ui.dart'; import 'package:nylo_framework/nylo_framework.dart'; -import 'package:woosignal/helpers/shared_pref.dart'; import 'package:woosignal/models/response/woosignal_app.dart'; import 'package:wp_json_api/exceptions/empty_username_exception.dart'; import 'package:wp_json_api/exceptions/existing_user_email_exception.dart'; @@ -176,7 +177,7 @@ class _AccountRegistrationPageState extends State { }); String username = - (email.replaceAll(new RegExp(r'([@.])'), "")) + randomStr(4); + (email.replaceAll(new RegExp(r'([@.])'), "")) + _randomStr(4); WPUserRegisterResponse wpUserRegisterResponse; try { @@ -265,13 +266,23 @@ class _AccountRegistrationPageState extends State { ); } + String _randomStr(int strLen) { + const chars = "abcdefghijklmnopqrstuvwxyz0123456789"; + Random rnd = Random(DateTime.now().millisecondsSinceEpoch); + String result = ""; + for (var i = 0; i < strLen; i++) { + result += chars[rnd.nextInt(chars.length)]; + } + return result; + } + void _viewTermsConditions() { Navigator.pop(context); - openBrowserTab(url: _wooSignalApp.appTermslink); + openBrowserTab(url: _wooSignalApp.appTermsLink); } void _viewPrivacyPolicy() { Navigator.pop(context); - openBrowserTab(url: _wooSignalApp.appPrivacylink); + openBrowserTab(url: _wooSignalApp.appPrivacyLink); } } diff --git a/LabelStoreMax/lib/resources/themes/dark_theme.dart b/LabelStoreMax/lib/resources/themes/dark_theme.dart index 5aaae1f..ff69480 100644 --- a/LabelStoreMax/lib/resources/themes/dark_theme.dart +++ b/LabelStoreMax/lib/resources/themes/dark_theme.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/config/app_font.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart'; import 'package:flutter_app/resources/themes/text_theme/default_text_theme.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:nylo_framework/nylo_framework.dart'; /* @@ -14,6 +16,14 @@ import 'package:nylo_framework/nylo_framework.dart'; */ ThemeData darkTheme(BaseColorStyles darkColors) { + try { + appFont = GoogleFonts.getFont(AppHelper.instance.appConfig.themeFont ?? "Poppins"); + } on Exception catch(e) { + if (getEnv('APP_DEBUG') == true) { + NyLogger.error(e.toString()); + } + } + TextTheme darkTheme = getAppTextTheme(appFont, defaultTextTheme.merge(_darkTextTheme(darkColors))); return ThemeData( diff --git a/LabelStoreMax/lib/resources/themes/light_theme.dart b/LabelStoreMax/lib/resources/themes/light_theme.dart index 7c92f4f..7dff123 100644 --- a/LabelStoreMax/lib/resources/themes/light_theme.dart +++ b/LabelStoreMax/lib/resources/themes/light_theme.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/config/app_font.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart'; import 'package:flutter_app/resources/themes/text_theme/default_text_theme.dart'; +import 'package:google_fonts/google_fonts.dart'; import 'package:nylo_framework/nylo_framework.dart'; /* @@ -14,6 +16,14 @@ import 'package:nylo_framework/nylo_framework.dart'; */ ThemeData lightTheme(BaseColorStyles lightColors) { + try { + appFont = GoogleFonts.getFont(AppHelper.instance.appConfig.themeFont ?? "Poppins"); + } on Exception catch(e) { + if (getEnv('APP_DEBUG') == true) { + NyLogger.error(e.toString()); + } + } + TextTheme lightTheme = getAppTextTheme(appFont, defaultTextTheme.merge(_lightTextTheme(lightColors))); diff --git a/LabelStoreMax/lib/resources/themes/styles/dark_theme_colors.dart b/LabelStoreMax/lib/resources/themes/styles/dark_theme_colors.dart index 1419a16..b1e6473 100644 --- a/LabelStoreMax/lib/resources/themes/styles/dark_theme_colors.dart +++ b/LabelStoreMax/lib/resources/themes/styles/dark_theme_colors.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart'; /* @@ -9,24 +10,24 @@ import 'package:flutter_app/resources/themes/styles/base_styles.dart'; class DarkThemeColors implements BaseColorStyles { // general - Color get background => const Color(0xFF212121); + Color get background => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['background'])); Color get backgroundContainer => const Color(0xFF4a4a4a); - Color get primaryContent => const Color(0xFFE1E1E1); + Color get primaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['primary_text'])); Color get primaryAccent => const Color(0xFF818181); Color get surfaceBackground => Color(0xFF818181); Color get surfaceContent => Colors.black; // app bar - Color get appBarBackground => const Color(0xFF2C2C2C); - Color get appBarPrimaryContent => Colors.white; + Color get appBarBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['app_bar_background'])); + Color get appBarPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['app_bar_text'])); Color get inputPrimaryContent => Colors.white; // buttons - Color get buttonBackground => Colors.white60; - Color get buttonPrimaryContent => const Color(0xFF232c33); + Color get buttonBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['button_background'])); + Color get buttonPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['dark']['button_text'])); // bottom tab bar Color get bottomTabBarBackground => const Color(0xFF232c33); diff --git a/LabelStoreMax/lib/resources/themes/styles/light_theme_colors.dart b/LabelStoreMax/lib/resources/themes/styles/light_theme_colors.dart index c021c24..f3bc31f 100644 --- a/LabelStoreMax/lib/resources/themes/styles/light_theme_colors.dart +++ b/LabelStoreMax/lib/resources/themes/styles/light_theme_colors.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/resources/themes/styles/base_styles.dart'; /* @@ -9,23 +10,24 @@ import 'package:flutter_app/resources/themes/styles/base_styles.dart'; class LightThemeColors implements BaseColorStyles { // general - Color get background => const Color(0xFFFFFFFF); + + Color get background => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['background'])); Color get backgroundContainer => Colors.white; - Color get primaryContent => const Color(0xFF000000); + Color get primaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['primary_text'])); Color get primaryAccent => const Color(0xFF87c694); Color get surfaceBackground => Colors.white; Color get surfaceContent => Colors.black; // app bar - Color get appBarBackground => Colors.white; - Color get appBarPrimaryContent => const Color(0xFF3a3d40); + Color get appBarBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['app_bar_background'])); + Color get appBarPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['app_bar_text'])); Color get inputPrimaryContent => Colors.black; // buttons - Color get buttonBackground => const Color(0xFF529cda); - Color get buttonPrimaryContent => Colors.white; + Color get buttonBackground => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['button_background'])); + Color get buttonPrimaryContent => Color(int.parse(AppHelper.instance.appConfig.themeColors['light']['button_text'])); // bottom tab bar Color get bottomTabBarBackground => Colors.white; diff --git a/LabelStoreMax/lib/resources/widgets/home_drawer_widget.dart b/LabelStoreMax/lib/resources/widgets/home_drawer_widget.dart index e061988..4583adf 100644 --- a/LabelStoreMax/lib/resources/widgets/home_drawer_widget.dart +++ b/LabelStoreMax/lib/resources/widgets/home_drawer_widget.dart @@ -10,6 +10,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_app/bootstrap/app_helper.dart'; import 'package:flutter_app/bootstrap/helpers.dart'; import 'package:flutter_app/bootstrap/shared_pref/sp_auth.dart'; import 'package:flutter_app/resources/widgets/app_version_widget.dart'; @@ -17,6 +18,7 @@ import 'package:flutter_app/resources/widgets/woosignal_ui.dart'; import 'package:nylo_framework/theme/helper/ny_theme.dart'; import 'package:nylo_support/helpers/helper.dart'; import 'package:woosignal/models/response/woosignal_app.dart'; +import 'package:url_launcher/url_launcher.dart'; class HomeDrawerWidget extends StatefulWidget { const HomeDrawerWidget({Key key, @required this.wooSignalApp}) @@ -29,6 +31,16 @@ class HomeDrawerWidget extends StatefulWidget { } class _HomeDrawerWidgetState extends State { + + Map _socialLinks = {}; + + + @override + void initState() { + super.initState(); + _socialLinks = AppHelper.instance.appConfig.socialLinks ?? {}; + } + @override Widget build(BuildContext context) { bool isDark = (Theme.of(context).brightness == Brightness.dark); @@ -66,27 +78,27 @@ class _HomeDrawerWidgetState extends State { leading: Icon(Icons.shopping_cart), onTap: _actionCart, ), - if (widget.wooSignalApp.appTermslink != null && widget.wooSignalApp.appPrivacylink != null) - Padding( - child: Text( - trans("About Us"), - style: Theme.of(context).textTheme.subtitle2, + if (widget.wooSignalApp.appTermsLink != null && widget.wooSignalApp.appPrivacyLink != null) + Padding( + child: Text( + trans("About Us"), + style: Theme.of(context).textTheme.subtitle2, + ), + padding: EdgeInsets.only(left: 16, top: 8, bottom: 8), ), - padding: EdgeInsets.only(left: 16, top: 8, bottom: 8), - ), - if (widget.wooSignalApp.appTermslink != null && - widget.wooSignalApp.appTermslink.isNotEmpty) + if (widget.wooSignalApp.appTermsLink != null && + widget.wooSignalApp.appTermsLink.isNotEmpty) ListTile( title: Text(trans("Terms and conditions"), - style: Theme.of(context).textTheme.bodyText2.copyWith( - fontSize: 16 - ),), + style: Theme.of(context).textTheme.bodyText2.copyWith( + fontSize: 16 + ),), leading: Icon(Icons.menu_book_rounded), trailing: Icon(Icons.keyboard_arrow_right_rounded), onTap: _actionTerms, ), - if (widget.wooSignalApp.appPrivacylink != null && - widget.wooSignalApp.appPrivacylink.isNotEmpty) + if (widget.wooSignalApp.appPrivacyLink != null && + widget.wooSignalApp.appPrivacyLink.isNotEmpty) ListTile( title: Text(trans("Privacy policy"), style: Theme.of(context).textTheme.bodyText2.copyWith( fontSize: 16 @@ -99,7 +111,7 @@ class _HomeDrawerWidgetState extends State { title: Text( trans((isDark ? "Light Mode" : "Dark Mode")), style: Theme.of(context).textTheme.bodyText2.copyWith( - fontSize: 16 + fontSize: 16 ) ), leading: Icon(Icons.brightness_4_rounded), @@ -109,6 +121,26 @@ class _HomeDrawerWidgetState extends State { }); }, ), + if (_socialLinks.isNotEmpty) + Padding( + child: Text( + trans("Social"), + style: Theme.of(context).textTheme.subtitle2, + ), + padding: EdgeInsets.only(left: 16, top: 8, bottom: 8), + ), + ..._socialLinks.entries.where((element) => element != null && element.value != "").map((socialLink) => ListTile( + title: Text( + capitalize(socialLink.key), + style: Theme.of(context).textTheme.bodyText2.copyWith( + fontSize: 16 + ) + ), + leading: Image.asset(getImageAsset(socialLink.key) + '.png', height: 25, width: 25), + onTap: () async { + await launch(socialLink.value); + }, + )).toList(), ListTile( title: AppVersionWidget(), ), @@ -118,9 +150,9 @@ class _HomeDrawerWidgetState extends State { ); } - _actionTerms() => openBrowserTab(url: widget.wooSignalApp.appTermslink); + _actionTerms() => openBrowserTab(url: widget.wooSignalApp.appTermsLink); - _actionPrivacy() => openBrowserTab(url: widget.wooSignalApp.appPrivacylink); + _actionPrivacy() => openBrowserTab(url: widget.wooSignalApp.appPrivacyLink); _actionProfile() async { Navigator.pop(context); @@ -136,4 +168,6 @@ class _HomeDrawerWidgetState extends State { Navigator.pop(context); Navigator.pushNamed(context, "/cart"); } + + String capitalize(String s) => s[0].toUpperCase() + s.substring(1); } diff --git a/LabelStoreMax/public/assets/images/facebook.png b/LabelStoreMax/public/assets/images/facebook.png new file mode 100644 index 0000000..1983426 Binary files /dev/null and b/LabelStoreMax/public/assets/images/facebook.png differ diff --git a/LabelStoreMax/public/assets/images/instagram.png b/LabelStoreMax/public/assets/images/instagram.png new file mode 100644 index 0000000..dc82026 Binary files /dev/null and b/LabelStoreMax/public/assets/images/instagram.png differ diff --git a/LabelStoreMax/public/assets/images/twitter.png b/LabelStoreMax/public/assets/images/twitter.png new file mode 100644 index 0000000..304ca30 Binary files /dev/null and b/LabelStoreMax/public/assets/images/twitter.png differ diff --git a/LabelStoreMax/public/assets/images/youtube.png b/LabelStoreMax/public/assets/images/youtube.png new file mode 100644 index 0000000..88880c5 Binary files /dev/null and b/LabelStoreMax/public/assets/images/youtube.png differ diff --git a/LabelStoreMax/pubspec.lock b/LabelStoreMax/pubspec.lock index d2e887a..4a56cd3 100644 --- a/LabelStoreMax/pubspec.lock +++ b/LabelStoreMax/pubspec.lock @@ -70,7 +70,7 @@ packages: name: cached_network_image url: "https://pub.dartlang.org" source: hosted - version: "3.1.0+1" + version: "3.2.0" cached_network_image_platform_interface: dependency: transitive description: @@ -154,7 +154,7 @@ packages: name: device_info url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3" device_info_platform_interface: dependency: transitive description: @@ -168,7 +168,7 @@ packages: name: dio url: "https://pub.dartlang.org" source: hosted - version: "4.0.1" + version: "4.0.4" fake_async: dependency: transitive description: @@ -222,7 +222,7 @@ packages: name: flutter_cache_manager url: "https://pub.dartlang.org" source: hosted - version: "3.1.2" + version: "3.3.0" flutter_dotenv: dependency: transitive description: @@ -461,14 +461,14 @@ packages: name: nylo_framework url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.3" nylo_support: dependency: transitive description: name: nylo_support url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.3.1" octo_image: dependency: transitive description: @@ -615,6 +615,20 @@ packages: name: shared_preferences url: "https://pub.dartlang.org" source: hosted + version: "2.0.11" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted version: "2.0.8" shared_preferences_linux: dependency: transitive @@ -768,6 +782,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.17" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.13" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.13" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" uuid: dependency: transitive description: @@ -837,7 +907,7 @@ packages: name: woosignal url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "3.0.0" wp_json_api: dependency: "direct main" description: diff --git a/LabelStoreMax/pubspec.yaml b/LabelStoreMax/pubspec.yaml index c194a93..afde5ca 100644 --- a/LabelStoreMax/pubspec.yaml +++ b/LabelStoreMax/pubspec.yaml @@ -1,7 +1,7 @@ # Official WooSignal App Template for WooCommerce # Label StoreMax -# Version: 5.4.0 +# Version: 5.5.0 # Author: Anthony Gordon # Homepage: https://woosignal.com # Documentation: https://woosignal.com/docs/app/label-storemax @@ -29,11 +29,11 @@ dependencies: analyzer: ^1.5.0 intl: ^0.17.0 page_transition: ^2.0.4 - nylo_framework: ^2.1.1 - woosignal: ^2.2.1 + nylo_framework: ^2.1.3 + woosignal: ^3.0.0 flutter_stripe: ^2.0.2 wp_json_api: ^3.1.3 - cached_network_image: ^3.1.0+1 + cached_network_image: ^3.2.0 package_info: ^2.0.2 money_formatter: ^0.0.3 platform_alert_dialog: ^1.0.0+2 @@ -41,6 +41,7 @@ dependencies: webview_flutter: ^2.3.1 pull_to_refresh: 2.0.0 flutter_swiper: ^1.1.6 + url_launcher: ^6.0.17 flutter_styled_toast: ^2.0.0 animate_do: ^2.0.0 bubble_tab_indicator: ^0.1.5 @@ -52,6 +53,8 @@ dependencies: auto_size_text: ^3.0.0 html: ^0.15.0 flutter_staggered_grid_view: ^0.4.1 +# firebase_messaging: ^11.2.3 +# firebase_core: ^1.10.5 flutter: sdk: flutter flutter_localizations: @@ -84,13 +87,8 @@ flutter: # To add assets to your application, add an assets section, like this: assets: - public/assets/fonts/ - - public/assets/images/camion.gif - - public/assets/images/credit_cards.png - - public/assets/images/shipping_icon.png - - public/assets/images/dark_powered_by_stripe.png - - public/assets/images/cash_on_delivery.jpeg - - public/assets/images/razorpay.png - - public/assets/images/paypal_logo.png - - public/assets/json/default_shipping.json + - public/ + - public/assets/json/ + - public/assets/images/ - lang/ - .env diff --git a/README.md b/README.md index 0873a36..9828319 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # WooCommerce App: Label StoreMax -### Label StoreMax - v5.4.0 +### Label StoreMax - v5.5.0 [Official WooSignal WooCommerce App](https://woosignal.com)