diff --git a/app/build.gradle b/app/build.gradle index 7416bdd..f8520c9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,6 +12,15 @@ def STRING = "String" android { compileSdk 33 + signingConfigs { + release { + storeFile file("../debug.keystore") + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" + } + } + defaultConfig { applicationId "pl.tkadziolka.snipmeandroid" minSdk 21 @@ -32,6 +41,14 @@ android { buildConfigField STRING, BASE_URL, API_BASE_URL } + + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + + buildConfigField STRING, BASE_URL, API_BASE_URL + } } compileOptions { diff --git a/app/src/main/java/pl/tkadziolka/snipmeandroid/MainActivity.kt b/app/src/main/java/pl/tkadziolka/snipmeandroid/MainActivity.kt index 06c4610..8b31fa7 100644 --- a/app/src/main/java/pl/tkadziolka/snipmeandroid/MainActivity.kt +++ b/app/src/main/java/pl/tkadziolka/snipmeandroid/MainActivity.kt @@ -19,27 +19,16 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - // Instantiate a FlutterEngine. - flutterEngine = FlutterEngine(this) - - // Start executing Dart code to pre-warm the FlutterEngine. - flutterEngine.dartExecutor.executeDartEntrypoint( - DartExecutor.DartEntrypoint.createDefault() - ) - - flutterEngine.plugins.add(LoginModelPlugin()) - flutterEngine.plugins.add(MainModelPlugin()) - flutterEngine.plugins.add(DetailModelPlugin()) - - // Cache the FlutterEngine to be used by FlutterActivity. - FlutterEngineCache - .getInstance() - .put(cachedEngineId, flutterEngine) - - startActivity( - FlutterActivity - .withCachedEngine(cachedEngineId) - .build(this) - ) + FlutterEngine(this).apply { + dartExecutor.executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault()) + + plugins.add(LoginModelPlugin()) + plugins.add(MainModelPlugin()) + plugins.add(DetailModelPlugin()) + + FlutterEngineCache.getInstance().put(cachedEngineId, this) + + startActivity(FlutterActivity.withCachedEngine(cachedEngineId).build(baseContext)) + } } } \ No newline at end of file diff --git a/app/src/main/java/pl/tkadziolka/snipmeandroid/di/NetworkModule.kt b/app/src/main/java/pl/tkadziolka/snipmeandroid/di/NetworkModule.kt index 858ab54..d8c71aa 100644 --- a/app/src/main/java/pl/tkadziolka/snipmeandroid/di/NetworkModule.kt +++ b/app/src/main/java/pl/tkadziolka/snipmeandroid/di/NetworkModule.kt @@ -63,7 +63,7 @@ internal val networkModule = module { single { Retrofit.Builder() - .client(get()) + .client(get()) .baseUrl(BuildConfig.BASE_URL) .addConverterFactory(MoshiConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) diff --git a/app/src/main/java/pl/tkadziolka/snipmeandroid/infrastructure/local/AuthPreferences.kt b/app/src/main/java/pl/tkadziolka/snipmeandroid/infrastructure/local/AuthPreferences.kt index 5621c85..594c3a6 100644 --- a/app/src/main/java/pl/tkadziolka/snipmeandroid/infrastructure/local/AuthPreferences.kt +++ b/app/src/main/java/pl/tkadziolka/snipmeandroid/infrastructure/local/AuthPreferences.kt @@ -5,7 +5,6 @@ import pl.tkadziolka.snipmeandroid.util.PreferencesUtil private const val TOKEN_KEY = "7e3a40ea-32d2-4248-bcfb-297f2f41246e" class AuthPreferences(private val prefs: PreferencesUtil) { - fun saveToken(token: String) { prefs.save(TOKEN_KEY, token) } diff --git a/debug.keystore b/debug.keystore new file mode 100644 index 0000000..a11cb7f Binary files /dev/null and b/debug.keystore differ diff --git a/flutter_module/lib/presentation/navigation/login/login_navigator.dart b/flutter_module/lib/presentation/navigation/login/login_navigator.dart index eafd2d1..8f90286 100644 --- a/flutter_module/lib/presentation/navigation/login/login_navigator.dart +++ b/flutter_module/lib/presentation/navigation/login/login_navigator.dart @@ -2,9 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_module/presentation/navigation/screen_navigator.dart'; import 'package:go_router_plus/go_router_plus.dart'; -class LoginNavigator extends ScreenNavigator - with ChangeNotifier - implements LoggedInState { +class LoginNavigator extends ScreenNavigator with ChangeNotifier implements LoggedInState { bool _loggedIn = false; @override diff --git a/flutter_module/lib/presentation/widgets/snippet_list_item.dart b/flutter_module/lib/presentation/widgets/snippet_list_item.dart index 2e95810..c45679e 100644 --- a/flutter_module/lib/presentation/widgets/snippet_list_item.dart +++ b/flutter_module/lib/presentation/widgets/snippet_list_item.dart @@ -24,44 +24,40 @@ class SnippetListTile extends HookWidget { Widget build(BuildContext context) { return SurfaceStyles.snippetCard( onTap: onTap, - child: Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Padding( - padding: const EdgeInsets.only( - top: Dimens.l, - left: Dimens.l, - right: Dimens.l, - bottom: Dimens.m, - ), - child: TextStyles.title(snippet.title ?? ""), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.only( + top: Dimens.l, + left: Dimens.l, + right: Dimens.l, + bottom: Dimens.m, ), - Ink( - color: ColorStyles.codeBackground(), - child: Padding( - padding: const EdgeInsets.symmetric( - vertical: Dimens.m, - horizontal: Dimens.l, - ), - child: Expanded( - child: CodeTextView.preview( - code: snippet.code?.raw ?? "", - tokens: snippet.code?.tokens, - ), - ), + child: TextStyles.title(snippet.title ?? ""), + ), + Ink( + color: ColorStyles.codeBackground(), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: Dimens.m, + horizontal: Dimens.l, + ), + child: CodeTextView.preview( + code: snippet.code?.raw ?? "", + tokens: snippet.code?.tokens, ), ), + ), + const SizedBox(height: Dimens.m), + if (isExpanded) ...[ + Padding( + padding: const EdgeInsets.symmetric(horizontal: Dimens.l), + child: SnippetDetailsBar(snippet: snippet), + ), const SizedBox(height: Dimens.m), - if (isExpanded) ...[ - Padding( - padding: const EdgeInsets.symmetric(horizontal: Dimens.l), - child: SnippetDetailsBar(snippet: snippet), - ), - const SizedBox(height: Dimens.m), - ], ], - ), + ], ), ); } diff --git a/flutter_module/lib/presentation/widgets/view_state_wrapper.dart b/flutter_module/lib/presentation/widgets/view_state_wrapper.dart index d1a12a1..9d8a186 100644 --- a/flutter_module/lib/presentation/widgets/view_state_wrapper.dart +++ b/flutter_module/lib/presentation/widgets/view_state_wrapper.dart @@ -2,45 +2,48 @@ import 'package:flutter/material.dart'; typedef DataWidgetBuilder = Widget Function(BuildContext context, T? data); - class ViewStateWrapper extends StatelessWidget { - const ViewStateWrapper({ - Key? key, - required this.builder, - this.isLoading = false, - this.data, - this.error, - }) : super(key: key); +class ViewStateWrapper extends StatelessWidget { + const ViewStateWrapper({ + Key? key, + required this.builder, + this.isLoading = false, + this.data, + this.error, + }) : super(key: key); - final bool isLoading; - final T? data; - final String? error; - final DataWidgetBuilder builder; + final bool isLoading; + final T? data; + final String? error; + final DataWidgetBuilder builder; - @override - Widget build(BuildContext context) { - return Stack( - children: [ - // Data - Visibility( - visible: error == null && !isLoading, - child: builder.call(context, data), - ), - // Loading - Visibility( - visible: isLoading, - child: const Center(child: CircularProgressIndicator()), - ), - // Error - Visibility( - visible: error != null, - child: Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [const Text("Error"), Text(error ?? "")], - ), - ), - ) - ], - ); - } - } \ No newline at end of file + @override + Widget build(BuildContext context) { + return Stack( + children: [ + // Data + Visibility( + visible: error == null && !isLoading, + child: builder.call(context, data), + ), + // Loading + Visibility( + visible: isLoading, + child: const Center(child: CircularProgressIndicator()), + ), + // Error + Visibility( + visible: error != null, + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Text("Error"), + Text(error ?? ""), + ], + ), + ), + ) + ], + ); + } +}