Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}

Expand Down Expand Up @@ -35,24 +34,28 @@ if (keystorePropertiesFile.exists()) {
}

android {
buildFeatures {
resValues true
buildConfig true
}
namespace "de.susch19.nssl"
compileSdk flutter.compileSdkVersion

ndkVersion "28.2.13676358"
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "17"
}

defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
applicationId 'de.susch19.nssl'
resValue "string", "app_name", "NSSL"
multiDexEnabled true
minSdk 23
minSdkVersion flutter.minSdkVersion
targetSdk flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
Expand Down Expand Up @@ -90,4 +93,4 @@ flutter {

dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.4'
}
}
18 changes: 0 additions & 18 deletions android/build.gradle

This file was deleted.

24 changes: 24 additions & 0 deletions android/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
allprojects {
repositories {
google()
mavenCentral()
}
}

val newBuildDir: Directory =
rootProject.layout.buildDirectory
.dir("../../build")
.get()
rootProject.layout.buildDirectory.value(newBuildDir)

subprojects {
val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
project.layout.buildDirectory.value(newSubprojectBuildDir)
}
subprojects {
project.evaluationDependsOn(":app")
}

tasks.register<Delete>("clean") {
delete(rootProject.layout.buildDirectory)
}
7 changes: 5 additions & 2 deletions android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
android.enableJetifier=true
android.useAndroidX=true
android.enableR8=true
org.gradle.jvmargs=-Xmx2048M
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false
25 changes: 0 additions & 25 deletions android/settings.gradle

This file was deleted.

26 changes: 26 additions & 0 deletions android/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
pluginManagement {
val flutterSdkPath =
run {
val properties = java.util.Properties()
file("local.properties").inputStream().use { properties.load(it) }
val flutterSdkPath = properties.getProperty("flutter.sdk")
require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
flutterSdkPath
}

includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.12.2" apply false
id("org.jetbrains.kotlin.android") version "2.1.21" apply false
}

include(":app")
12 changes: 12 additions & 0 deletions ios/Flutter/ephemeral/flutter_native_integration.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FLUTTER_ROOT=C:\Users\susch\source\flutter\flutter
FLUTTER_APPLICATION_PATH=C:\Users\susch\source\flutter\nssl_current
FLUTTER_FRAMEWORK_SWIFT_PACKAGE_PATH=C:\Users\susch\source\flutter\nssl_current\ios\Flutter\ephemeral\Packages\.packages\FlutterFramework
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=lib\main.dart
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=0.41.1
FLUTTER_BUILD_NUMBER=1
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=.dart_tool/package_config.json
8 changes: 4 additions & 4 deletions lib/firebase/cloud_messsaging.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class CloudMessaging extends _$CloudMessaging {
if (list == null) {
var mapp = jsonDecode(data["items"]);
//User was added to new list
var items = ref.watch(shoppingItemsProvider.notifier);
var items = ref.read(shoppingItemsProvider.notifier);
var newState = items.state.toList();
newState.addAll(
mapp.map(
Expand All @@ -63,7 +63,7 @@ class CloudMessaging extends _$CloudMessaging {
switch (action) {
case "ItemChanged": //Id, Amount, action
var id = int.parse(data["id"]);
var items = ref.watch(shoppingItemsProvider.notifier);
var items = ref.read(shoppingItemsProvider.notifier);
var newState = items.state.toList();
var item = newState.firstWhere((x) => x.id == id);
newState.remove(item);
Expand Down Expand Up @@ -100,7 +100,7 @@ class CloudMessaging extends _$CloudMessaging {
break;
case "ItemRenamed": //product.Id, product.Name
var itemId = int.parse(data["id"]);
var items = ref.watch(shoppingItemsProvider.notifier);
var items = ref.read(shoppingItemsProvider.notifier);
var newState = items.state.toList();
var item = newState.firstWhere((x) => x.id == itemId);
newState.remove(item);
Expand All @@ -110,7 +110,7 @@ class CloudMessaging extends _$CloudMessaging {
break;
case "OrderChanged":
var itemId = int.parse(data["id"]);
var items = ref.watch(shoppingItemsProvider.notifier);
var items = ref.read(shoppingItemsProvider.notifier);
var newState = items.state.toList();
var item = newState.firstWhere((x) => x.id == itemId);
newState.remove(item);
Expand Down
15 changes: 7 additions & 8 deletions lib/firebase/cloud_messsaging.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

41 changes: 41 additions & 0 deletions lib/helper/simple_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,48 @@
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:nssl/localization/nssl_strings.dart';

class SimpleDialogAcceptDeny {
static Widget createHookSingleState<T>({
String title = "",
required Widget Function(BuildContext context, ValueNotifier<T> state)
builder,
required T initialValue,
void Function(bool result, T value)? onSubmitted,
bool showCancel = true,
String acceptName = "Akzeptieren",
String denyName = "Abbrechen",
required BuildContext context,
}) {
return HookBuilder(
builder: (context) {
final val = useState<T>(initialValue);
return AlertDialog(
title: title == "" ? null : Text(title),
content: builder(context, val),
actions: <Widget>[
showCancel
? TextButton(
child: Text(denyName),
onPressed: () {
Navigator.pop(context, "");
if (onSubmitted != null) onSubmitted(false, val.value);
},
)
: Container(),
TextButton(
child: Text(acceptName),
onPressed: () {
Navigator.pop(context, "");
if (onSubmitted != null) onSubmitted(true, val.value);
},
),
],
);
},
);
}

static AlertDialog create(
{String title = "",
String text = "",
Expand Down
6 changes: 6 additions & 0 deletions lib/localization/nssl_messages_de.dart
Original file line number Diff line number Diff line change
Expand Up @@ -275,5 +275,11 @@ class MessageLookup extends MessageLookupByLibrary {
'Aktiviere Material Design 3 (Farben basierend auf Android Einstellungen)'),
"elevateAppBar":
MessageLookupByLibrary.simpleMessage('Hebe Titel farblich hervor'),
"setupStartupList":
MessageLookupByLibrary.simpleMessage('Konfiguriere Startliste'),
"setupStartupListDescription":
MessageLookupByLibrary.simpleMessage('Welche Liste sollte geöffnet sein, wenn die App gestartet wird?'),
"setupListLastOpened":
MessageLookupByLibrary.simpleMessage('Zuletzt geöffnet.')
};
}
10 changes: 8 additions & 2 deletions lib/localization/nssl_messages_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -249,5 +249,11 @@ class MessageLookup extends MessageLookupByLibrary {
'Use Material Design 3 (Colors based on Android Version)'),
"elevateAppBar":
MessageLookupByLibrary.simpleMessage('Colorize Title Background'),
};
}
"setupStartupList":
MessageLookupByLibrary.simpleMessage('Setup Startup List'),
"setupStartupListDescription":
MessageLookupByLibrary.simpleMessage('Which list should be shown, when app starts initially?'),
"setupListLastOpened":
MessageLookupByLibrary.simpleMessage('Last opened')
};
}
6 changes: 6 additions & 0 deletions lib/localization/nssl_strings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,12 @@ class NSSLStrings {
name: 'useMaterial3', locale: _localeName);
String elevateAppBar() => Intl.message('Colorize Title Background',
name: 'elevateAppBar', locale: _localeName);
String setupList() => Intl.message('Setup Startup List',
name: 'setupStartupList', locale: _localeName);
String setupListDescription() => Intl.message('Which list should be shown, when app starts initially?',
name: 'setupStartupListDescription', locale: _localeName);
String setupListLastOpened() => Intl.message('Last opened',
name: 'setupListLastOpened', locale: _localeName);

//String openAppDrawerTooltip() => Intl.message('Open navigation menu', name: 'openNavigationMenu', locale: _localeName);
}
24 changes: 20 additions & 4 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,13 @@ import 'package:nssl/firebase/cloud_messsaging.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_riverpod/legacy.dart';
import 'package:shared_preferences/shared_preferences.dart';
// import 'package:shared_preferences/shared_preferences.dart';

final sharedPreferencesProvider = Provider<SharedPreferences>(
(ref) => throw UnimplementedError(),
);

class CustomScrollBehavior extends MaterialScrollBehavior {
@override
Set<PointerDeviceKind> get dragDevices => {
Expand All @@ -40,9 +45,12 @@ Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
final appRestartProvider = StateProvider<int>((ref) => 0);

Future<void> main() async {
// iWonderHowLongThisTakes();
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();

runApp(
ProviderScope(
overrides: [sharedPreferencesProvider.overrideWithValue(prefs)],
child: Consumer(
builder: (context, ref, child) {
return EagerInitialize(
Expand Down Expand Up @@ -119,11 +127,11 @@ class _NSSLState extends ConsumerState<NSSLPage> {
super.initState();
subscribeFirebase(context);
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
ref.read(cloudMessagingProvider.notifier).onMessage(message);
_pushMessage(message);
});

FirebaseMessaging.onMessage.listen((event) {
ref.read(cloudMessagingProvider.notifier).onMessage(event);
_pushMessage(event);
});

for (var list in ref.read(shoppingListsProvider).shoppingLists)
Expand All @@ -135,8 +143,16 @@ class _NSSLState extends ConsumerState<NSSLPage> {
var initMessage = await FirebaseMessaging.instance.getInitialMessage();

if (initMessage != null) {
ref.read(cloudMessagingProvider.notifier).onMessage(initMessage);
_pushMessage(initMessage);
}
}

void _pushMessage(RemoteMessage msg) {
if (!ref.context.mounted) {
WidgetsBinding.instance.addPostFrameCallback((_) => _pushMessage(msg));
return;
}
ref.read(cloudMessagingProvider.notifier).onMessage(msg);
}

@override
Expand Down
Loading
Loading