diff --git a/.env b/.env new file mode 100644 index 0000000..2f2c8f9 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +NOTEPUSH_URL="https://notepush.nostrlabs.io" \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..5881bbc --- /dev/null +++ b/.env.development @@ -0,0 +1 @@ +NOTEPUSH_URL="http://10.0.2.2:8000" \ No newline at end of file diff --git a/lib/flavours/free/main.dart b/lib/flavours/free/main.dart index 26b6a08..f5bbe68 100644 --- a/lib/flavours/free/main.dart +++ b/lib/flavours/free/main.dart @@ -6,7 +6,6 @@ import 'package:zap_stream_flutter/i18n/strings.g.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); LocaleSettings.useDeviceLocale(); - // FCM DELETE await initLogin(); runZapStream(); diff --git a/lib/main.dart b/lib/main.dart index 666dff5..57f9e70 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,8 @@ import 'dart:developer' as developer; -import 'package:firebase_core/firebase_core.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:zap_stream_flutter/app.dart'; import 'package:zap_stream_flutter/const.dart'; import 'package:zap_stream_flutter/i18n/strings.g.dart'; @@ -10,7 +11,8 @@ import 'package:zap_stream_flutter/notifications.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); LocaleSettings.useDeviceLocale(); - await Firebase.initializeApp(); + await dotenv.load(fileName: kDebugMode ? ".env.development" : ".env"); + await initLogin(); setupNotifications().catchError((e) { diff --git a/lib/notifications.dart b/lib/notifications.dart index 50d5968..3e26438 100644 --- a/lib/notifications.dart +++ b/lib/notifications.dart @@ -1,7 +1,9 @@ import 'dart:developer' as developer; import 'dart:io'; +import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:ndk/ndk.dart'; import 'package:zap_stream_flutter/const.dart'; @@ -19,14 +21,16 @@ class Notepush { "$base/user-info/$pubkey/${Uri.encodeComponent(token)}?backend=fcm"; developer.log(url); final auth = await _makeAuth("PUT", url); - final rsp = await http.put( - Uri.parse(url), - headers: { - "authorization": "Nostr $auth", - "accept": "application/json", - "content-type": "application/json", - }, - ); + final rsp = await http + .put( + Uri.parse(url), + headers: { + "authorization": "Nostr $auth", + "accept": "application/json", + "content-type": "application/json", + }, + ) + .timeout(Duration(seconds: 10)); developer.log(rsp.body); return rsp.body; } @@ -48,9 +52,11 @@ class Notepush { } Future setupNotifications() async { + await Firebase.initializeApp(); + final signer = ndk.accounts.getLoggedAccount()?.signer; if (signer != null) { - final pusher = Notepush("http://10.0.2.2:8000", signer: signer); + final pusher = Notepush(dotenv.env["NOTEPUSH_URL"]!, signer: signer); final fbase = FirebaseMessaging.instance; FirebaseMessaging.onMessage.listen((msg) { developer.log(msg.notification?.body ?? ""); diff --git a/pubspec.lock b/pubspec.lock index 0e32520..1195ff4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -366,6 +366,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.1" + flutter_dotenv: + dependency: "direct main" + description: + name: flutter_dotenv + sha256: b7c7be5cd9f6ef7a78429cabd2774d3c4af50e79cb2b7593e3d5d763ef95c61b + url: "https://pub.dev" + source: hosted + version: "5.2.1" flutter_lints: dependency: "direct dev" description: diff --git a/pubspec.yaml b/pubspec.yaml index 1a61d13..273e4d3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,7 @@ dependencies: firebase_messaging: ^15.2.6 http: ^1.4.0 flutter_local_notifications: ^19.2.1 + flutter_dotenv: ^5.2.1 dependency_overrides: ndk: @@ -79,6 +80,8 @@ dev_dependencies: flutter: uses-material-design: true assets: + - ".env" + - ".env.development" - "assets/svg/" - "assets/logo.png" - "assets/category/"