diff --git a/android/app/build.gradle b/android/app/build.gradle
index 763665e4..2b5f1845 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -27,10 +27,6 @@ if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
apply plugin: 'com.android.application'
-// START: FlutterFire Configuration
-apply plugin: 'com.google.gms.google-services'
-apply plugin: 'com.google.firebase.crashlytics'
-// END: FlutterFire Configuration
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
diff --git a/android/app/google-services.json b/android/app/google-services.json
deleted file mode 100644
index 5ed094a8..00000000
--- a/android/app/google-services.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "project_info": {
- "project_number": "372003342382",
- "project_id": "hiddify-flutter",
- "storage_bucket": "hiddify-flutter.appspot.com"
- },
- "client": [
- {
- "client_info": {
- "mobilesdk_app_id": "1:372003342382:android:c33c6eb99da7ceb76fb7bf",
- "android_client_info": {
- "package_name": "app.hiddify.com"
- }
- },
- "oauth_client": [
- {
- "client_id": "372003342382-hlkjtgug97q8melqpkvat5f9mi7nj3s8.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyDhiPAfkcUkQKcNXCUUcKL51K5UqRd7WXA"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": [
- {
- "client_id": "372003342382-hlkjtgug97q8melqpkvat5f9mi7nj3s8.apps.googleusercontent.com",
- "client_type": 3
- }
- ]
- }
- }
- }
- ],
- "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index b4fec929..52648854 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -7,10 +7,6 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
- // START: FlutterFire Configuration
- classpath 'com.google.gms:google-services:4.3.10'
- classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
- // END: FlutterFire Configuration
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
diff --git a/assets/translations/strings.i18n.json b/assets/translations/strings.i18n.json
index 39c685ca..448709d6 100644
--- a/assets/translations/strings.i18n.json
+++ b/assets/translations/strings.i18n.json
@@ -9,6 +9,9 @@
"sort": "Sort",
"sortBy": "Sort by"
},
+ "intro": {
+ "start": "Start"
+ },
"home": {
"pageTitle": "Home",
"emptyProfilesMsg": "Begin by adding a subscription profile",
@@ -101,6 +104,7 @@
},
"settings": {
"pageTitle": "Settings",
+ "requiresRestartMsg": "for this to take effect restart the app",
"general": {
"sectionTitle": "General",
"locale": "Language",
@@ -110,6 +114,8 @@
"dark": "Dark mode",
"light": "Light mode"
},
+ "enableAnalytics": "Enable Analytics",
+ "enableAnalyticsMsg": "Give permission to collect analytics and send crash reports to improve the app",
"trueBlack": "Pure Black",
"autoStart": "Start on Boot",
"silentStart": "Silent Start",
diff --git a/assets/translations/strings_fa.i18n.json b/assets/translations/strings_fa.i18n.json
index 9144aadb..91b4b90b 100644
--- a/assets/translations/strings_fa.i18n.json
+++ b/assets/translations/strings_fa.i18n.json
@@ -8,6 +8,9 @@
},
"sort": "مرتبسازی",
"sortBy": "مرتبسازی براساس"
+ },
+ "intro": {
+ "start": "شروع"
},
"home": {
"pageTitle": "خانه",
@@ -101,6 +104,7 @@
},
"settings": {
"pageTitle": "تنظیمات",
+ "requiresRestartMsg": "برای اعمال این تنظیم برنامه را بازنشانی کنید",
"general": {
"sectionTitle": "اصلی",
"locale": "زبان",
@@ -110,6 +114,8 @@
"dark": "تم تیره",
"light": "تم روشن"
},
+ "enableAnalytics": "فعالسازی آنالیتیکز",
+ "enableAnalyticsMsg": "ارائه دسترسی آنالیز و گزارش خطا برای بهبود عملکرد برنامه",
"trueBlack": "کاملا سیاه",
"autoStart": "اجرا با روشن شدن سیستم",
"silentStart": "اجرای ساکت",
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
deleted file mode 100644
index b69ac067..00000000
--- a/ios/Runner/GoogleService-Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- API_KEY
- AIzaSyDs7pee9vjdKfUYFbJvHo8rDwqp36dkPRI
- GCM_SENDER_ID
- 372003342382
- PLIST_VERSION
- 1
- BUNDLE_ID
- com.hiddify.hiddify
- PROJECT_ID
- hiddify-flutter
- STORAGE_BUCKET
- hiddify-flutter.appspot.com
- IS_ADS_ENABLED
-
- IS_ANALYTICS_ENABLED
-
- IS_APPINVITE_ENABLED
-
- IS_GCM_ENABLED
-
- IS_SIGNIN_ENABLED
-
- GOOGLE_APP_ID
- 1:372003342382:ios:a579c1abfc54046a6fb7bf
-
-
\ No newline at end of file
diff --git a/ios/firebase_app_id_file.json b/ios/firebase_app_id_file.json
deleted file mode 100644
index 777fcea3..00000000
--- a/ios/firebase_app_id_file.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_generated_by": "FlutterFire CLI",
- "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
- "GOOGLE_APP_ID": "1:372003342382:ios:a579c1abfc54046a6fb7bf",
- "FIREBASE_PROJECT_ID": "hiddify-flutter",
- "GCM_SENDER_ID": "372003342382"
-}
\ No newline at end of file
diff --git a/lib/bootstrap.dart b/lib/bootstrap.dart
index f79eb9f7..4a0e26b8 100644
--- a/lib/bootstrap.dart
+++ b/lib/bootstrap.dart
@@ -1,8 +1,6 @@
import 'dart:async';
import 'dart:io';
-import 'package:firebase_core/firebase_core.dart';
-import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
@@ -21,18 +19,17 @@ import 'package:hiddify/services/service_providers.dart';
import 'package:hiddify/utils/utils.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:loggy/loggy.dart';
+import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:window_manager/window_manager.dart';
final _loggy = Loggy('bootstrap');
-final _stopWatch = Stopwatch();
+const _testCrashReport = false;
Future lazyBootstrap(
WidgetsBinding widgetsBinding,
Environment env,
) async {
- _stopWatch.start();
-
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
if (PlatformUtils.isDesktop) await windowManager.ensureInitialized();
@@ -45,11 +42,28 @@ Future lazyBootstrap(
],
);
- if (container.read(autoCrashReportProvider) && !kDebugMode) {
- _loggy.debug("initializing crashlytics");
- await initCrashlytics();
- }
+ final enableAnalytics = container.read(enableAnalyticsProvider);
+ await SentryFlutter.init(
+ (options) {
+ if ((enableAnalytics && !kDebugMode) || _testCrashReport) {
+ options.dsn = Environment.sentryDSN;
+ } else {
+ options.dsn = "";
+ }
+
+ options.environment = env.toString();
+ options.debug = kDebugMode;
+ },
+ appRunner: () => _lazyBootstrap(widgetsBinding, container, env),
+ );
+}
+
+Future _lazyBootstrap(
+ WidgetsBinding widgetsBinding,
+ ProviderContainer container,
+ Environment env,
+) async {
final debug = container.read(debugModeNotifierProvider) || kDebugMode;
final filesEditor = container.read(filesEditorServiceProvider);
@@ -59,7 +73,6 @@ Future lazyBootstrap(
_loggy.info(
"os: [${Platform.operatingSystem}](${Platform.operatingSystemVersion}), processor count [${Platform.numberOfProcessors}]",
);
- _loggy.info("basic setup took [${_stopWatch.elapsedMilliseconds}]ms");
final silentStart = container.read(silentStartNotifierProvider);
if (silentStart) {
@@ -81,8 +94,6 @@ Future lazyBootstrap(
);
if (!silentStart) FlutterNativeSplash.remove();
- _stopWatch.stop();
- _loggy.info("bootstrapping took [${_stopWatch.elapsedMilliseconds}]ms");
}
void initLoggers(
@@ -102,18 +113,6 @@ void initLoggers(
);
}
-Future initCrashlytics() async {
- switch (Platform.operatingSystem) {
- case "android" || "ios" || "macos":
- await Firebase.initializeApp();
- FlutterError.onError =
- FirebaseCrashlytics.instance.recordFlutterFatalError;
- default:
- _loggy.debug("platform is not supported for crashlytics");
- return;
- }
-}
-
Future initAppServices(
Result Function(ProviderListenable) read,
) async {
diff --git a/lib/core/prefs/general_prefs.dart b/lib/core/prefs/general_prefs.dart
index 0b559125..0242724e 100644
--- a/lib/core/prefs/general_prefs.dart
+++ b/lib/core/prefs/general_prefs.dart
@@ -7,6 +7,23 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'general_prefs.g.dart';
+@Riverpod(keepAlive: true)
+class IntroCompleted extends _$IntroCompleted {
+ late final _pref = Pref(
+ ref.watch(sharedPreferencesProvider),
+ "intro_completed",
+ false,
+ );
+
+ @override
+ bool build() => _pref.getValue();
+
+ Future update(bool value) {
+ state = value;
+ return _pref.update(value);
+ }
+}
+
@Riverpod(keepAlive: true)
class SilentStartNotifier extends _$SilentStartNotifier {
late final _pref =
@@ -22,11 +39,11 @@ class SilentStartNotifier extends _$SilentStartNotifier {
}
@Riverpod(keepAlive: true)
-class AutoCrashReport extends _$AutoCrashReport {
+class EnableAnalytics extends _$EnableAnalytics {
late final _pref = Pref(
ref.watch(sharedPreferencesProvider),
- "auto_crash_report",
- false,
+ "enable_analytics",
+ true,
);
@override
diff --git a/lib/domain/environment.dart b/lib/domain/environment.dart
index 27b5b4c1..169b29a6 100644
--- a/lib/domain/environment.dart
+++ b/lib/domain/environment.dart
@@ -3,6 +3,8 @@ import 'package:dartx/dartx.dart';
enum Environment {
prod,
dev;
+
+ static const sentryDSN = String.fromEnvironment("sentry_dsn");
}
enum Release {
diff --git a/lib/features/common/common.dart b/lib/features/common/common.dart
index b4eaf530..aca01a77 100644
--- a/lib/features/common/common.dart
+++ b/lib/features/common/common.dart
@@ -1,5 +1,6 @@
export 'app_update_notifier.dart';
export 'confirmation_dialogs.dart';
export 'custom_app_bar.dart';
+export 'general_pref_tiles.dart';
export 'profile_tile.dart';
export 'qr_code_scanner_screen.dart';
diff --git a/lib/features/common/general_pref_tiles.dart b/lib/features/common/general_pref_tiles.dart
new file mode 100644
index 00000000..eb4f8c91
--- /dev/null
+++ b/lib/features/common/general_pref_tiles.dart
@@ -0,0 +1,87 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_localized_locales/flutter_localized_locales.dart';
+import 'package:go_router/go_router.dart';
+import 'package:hiddify/core/core_providers.dart';
+import 'package:hiddify/core/prefs/prefs.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+
+class LocalePrefTile extends HookConsumerWidget {
+ const LocalePrefTile({super.key});
+
+ @override
+ Widget build(BuildContext context, WidgetRef ref) {
+ final t = ref.watch(translationsProvider);
+
+ final locale = ref.watch(localeNotifierProvider);
+
+ return ListTile(
+ title: Text(t.settings.general.locale),
+ subtitle: Text(
+ LocaleNamesLocalizationsDelegate.nativeLocaleNames[locale.name] ??
+ locale.name,
+ ),
+ leading: const Icon(Icons.language),
+ onTap: () async {
+ final selectedLocale = await showDialog(
+ context: context,
+ builder: (context) {
+ return SimpleDialog(
+ title: Text(t.settings.general.locale),
+ children: AppLocale.values
+ .map(
+ (e) => RadioListTile(
+ title: Text(
+ LocaleNamesLocalizationsDelegate
+ .nativeLocaleNames[e.name] ??
+ e.name,
+ ),
+ value: e,
+ groupValue: locale,
+ onChanged: (e) => context.pop(e),
+ ),
+ )
+ .toList(),
+ );
+ },
+ );
+ if (selectedLocale != null) {
+ await ref
+ .read(localeNotifierProvider.notifier)
+ .update(selectedLocale);
+ }
+ },
+ );
+ }
+}
+
+class EnableAnalyticsPrefTile extends HookConsumerWidget {
+ const EnableAnalyticsPrefTile({
+ super.key,
+ this.onChanged,
+ });
+
+ final ValueChanged? onChanged;
+
+ @override
+ Widget build(BuildContext context, WidgetRef ref) {
+ final t = ref.watch(translationsProvider);
+
+ final autoReport = ref.watch(enableAnalyticsProvider);
+
+ return SwitchListTile(
+ title: Text(t.settings.general.enableAnalytics),
+ subtitle: Text(
+ t.settings.general.enableAnalyticsMsg,
+ style: Theme.of(context).textTheme.bodySmall,
+ ),
+ secondary: const Icon(Icons.bug_report),
+ value: autoReport,
+ onChanged: (value) async {
+ if (onChanged != null) {
+ return onChanged!(value);
+ }
+ return ref.read(enableAnalyticsProvider.notifier).update(value);
+ },
+ );
+ }
+}
diff --git a/lib/features/settings/widgets/general_setting_tiles.dart b/lib/features/settings/widgets/general_setting_tiles.dart
index a2baf48c..f8b76249 100644
--- a/lib/features/settings/widgets/general_setting_tiles.dart
+++ b/lib/features/settings/widgets/general_setting_tiles.dart
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
-import 'package:flutter_localized_locales/flutter_localized_locales.dart';
import 'package:go_router/go_router.dart';
import 'package:hiddify/core/core_providers.dart';
import 'package:hiddify/core/prefs/prefs.dart';
+import 'package:hiddify/features/common/common.dart';
import 'package:hiddify/features/settings/widgets/theme_mode_switch_button.dart';
import 'package:hiddify/services/auto_start_service.dart';
import 'package:hiddify/utils/utils.dart';
@@ -15,47 +15,31 @@ class GeneralSettingTiles extends HookConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final t = ref.watch(translationsProvider);
- final locale = ref.watch(localeNotifierProvider);
-
final theme = ref.watch(themeProvider);
return Column(
children: [
- ListTile(
- title: Text(t.settings.general.locale),
- subtitle: Text(
- LocaleNamesLocalizationsDelegate.nativeLocaleNames[locale.name] ??
- locale.name,
- ),
- leading: const Icon(Icons.language),
- onTap: () async {
- final selectedLocale = await showDialog(
+ const LocalePrefTile(),
+ EnableAnalyticsPrefTile(
+ onChanged: (value) async {
+ await showDialog(
context: context,
builder: (context) {
- return SimpleDialog(
- title: Text(t.settings.general.locale),
- children: AppLocale.values
- .map(
- (e) => RadioListTile(
- title: Text(
- LocaleNamesLocalizationsDelegate
- .nativeLocaleNames[e.name] ??
- e.name,
- ),
- value: e,
- groupValue: locale,
- onChanged: (e) => context.pop(e),
- ),
- )
- .toList(),
+ return AlertDialog(
+ title: Text(t.settings.general.enableAnalytics),
+ content: Text(t.settings.requiresRestartMsg),
+ actions: [
+ TextButton(
+ onPressed: () => context.pop(true),
+ child: Text(
+ MaterialLocalizations.of(context).okButtonLabel,
+ ),
+ ),
+ ],
);
},
);
- if (selectedLocale != null) {
- await ref
- .read(localeNotifierProvider.notifier)
- .update(selectedLocale);
- }
+ return ref.read(enableAnalyticsProvider.notifier).update(value);
},
),
ListTile(
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index 08565b49..d183c590 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -7,6 +7,7 @@
#include "generated_plugin_registrant.h"
#include
+#include
#include
#include
#include
@@ -16,6 +17,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
+ g_autoptr(FlPluginRegistrar) sentry_flutter_registrar =
+ fl_plugin_registry_get_registrar_for_plugin(registry, "SentryFlutterPlugin");
+ sentry_flutter_plugin_register_with_registrar(sentry_flutter_registrar);
g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin");
sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar);
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index fa081fc5..e1759bc3 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
screen_retriever
+ sentry_flutter
sqlite3_flutter_libs
tray_manager
url_launcher_linux
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index 8e108f0b..6234da8d 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -5,14 +5,13 @@
import FlutterMacOS
import Foundation
-import firebase_core
-import firebase_crashlytics
import flutter_local_notifications
import mobile_scanner
import package_info_plus
import path_provider_foundation
import protocol_handler
import screen_retriever
+import sentry_flutter
import share_plus
import shared_preferences_foundation
import sqlite3_flutter_libs
@@ -21,14 +20,13 @@ import url_launcher_macos
import window_manager
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
- FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
- FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin"))
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
ProtocolHandlerPlugin.register(with: registry.registrar(forPlugin: "ProtocolHandlerPlugin"))
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
+ SentryFlutterPlugin.register(with: registry.registrar(forPlugin: "SentryFlutterPlugin"))
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
diff --git a/macos/Podfile.lock b/macos/Podfile.lock
index 7433b5cc..0f69469c 100644
--- a/macos/Podfile.lock
+++ b/macos/Podfile.lock
@@ -1,79 +1,25 @@
PODS:
- - Firebase/CoreOnly (10.12.0):
- - FirebaseCore (= 10.12.0)
- - Firebase/Crashlytics (10.12.0):
- - Firebase/CoreOnly
- - FirebaseCrashlytics (~> 10.12.0)
- - firebase_core (2.15.1):
- - Firebase/CoreOnly (~> 10.12.0)
- - FlutterMacOS
- - firebase_crashlytics (3.3.5):
- - Firebase/CoreOnly (~> 10.12.0)
- - Firebase/Crashlytics (~> 10.12.0)
- - firebase_core
- - FlutterMacOS
- - FirebaseCore (10.12.0):
- - FirebaseCoreInternal (~> 10.0)
- - GoogleUtilities/Environment (~> 7.8)
- - GoogleUtilities/Logger (~> 7.8)
- - FirebaseCoreExtension (10.15.0):
- - FirebaseCore (~> 10.0)
- - FirebaseCoreInternal (10.15.0):
- - "GoogleUtilities/NSData+zlib (~> 7.8)"
- - FirebaseCrashlytics (10.12.0):
- - FirebaseCore (~> 10.5)
- - FirebaseInstallations (~> 10.0)
- - FirebaseSessions (~> 10.5)
- - GoogleDataTransport (~> 9.2)
- - GoogleUtilities/Environment (~> 7.8)
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - PromisesObjC (~> 2.1)
- - FirebaseInstallations (10.15.0):
- - FirebaseCore (~> 10.0)
- - GoogleUtilities/Environment (~> 7.8)
- - GoogleUtilities/UserDefaults (~> 7.8)
- - PromisesObjC (~> 2.1)
- - FirebaseSessions (10.15.0):
- - FirebaseCore (~> 10.5)
- - FirebaseCoreExtension (~> 10.0)
- - FirebaseInstallations (~> 10.0)
- - GoogleDataTransport (~> 9.2)
- - GoogleUtilities/Environment (~> 7.10)
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - PromisesSwift (~> 2.1)
- flutter_local_notifications (0.0.1):
- FlutterMacOS
- FlutterMacOS (1.0.0)
- - GoogleDataTransport (9.2.5):
- - GoogleUtilities/Environment (~> 7.7)
- - nanopb (< 2.30910.0, >= 2.30908.0)
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/Environment (7.11.5):
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/Logger (7.11.5):
- - GoogleUtilities/Environment
- - "GoogleUtilities/NSData+zlib (7.11.5)"
- - GoogleUtilities/UserDefaults (7.11.5):
- - GoogleUtilities/Logger
- mobile_scanner (3.0.0):
- FlutterMacOS
- - nanopb (2.30909.0):
- - nanopb/decode (= 2.30909.0)
- - nanopb/encode (= 2.30909.0)
- - nanopb/decode (2.30909.0)
- - nanopb/encode (2.30909.0)
- package_info_plus (0.0.1):
- FlutterMacOS
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- - PromisesObjC (2.3.1)
- - PromisesSwift (2.3.1):
- - PromisesObjC (= 2.3.1)
- protocol_handler (0.0.1):
- FlutterMacOS
- screen_retriever (0.0.1):
- FlutterMacOS
+ - Sentry/HybridSDK (8.11.0):
+ - SentryPrivate (= 8.11.0)
+ - sentry_flutter (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - Sentry/HybridSDK (= 8.11.0)
+ - SentryPrivate (8.11.0)
- share_plus (0.0.1):
- FlutterMacOS
- shared_preferences_foundation (0.0.1):
@@ -102,8 +48,6 @@ PODS:
- FlutterMacOS
DEPENDENCIES:
- - firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`)
- - firebase_crashlytics (from `Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos`)
- flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`)
- FlutterMacOS (from `Flutter/ephemeral`)
- mobile_scanner (from `Flutter/ephemeral/.symlinks/plugins/mobile_scanner/macos`)
@@ -111,6 +55,7 @@ DEPENDENCIES:
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
- protocol_handler (from `Flutter/ephemeral/.symlinks/plugins/protocol_handler/macos`)
- screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`)
+ - sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`)
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqlite3_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlite3_flutter_libs/macos`)
@@ -120,25 +65,11 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- - Firebase
- - FirebaseCore
- - FirebaseCoreExtension
- - FirebaseCoreInternal
- - FirebaseCrashlytics
- - FirebaseInstallations
- - FirebaseSessions
- - GoogleDataTransport
- - GoogleUtilities
- - nanopb
- - PromisesObjC
- - PromisesSwift
+ - Sentry
+ - SentryPrivate
- sqlite3
EXTERNAL SOURCES:
- firebase_core:
- :path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos
- firebase_crashlytics:
- :path: Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos
flutter_local_notifications:
:path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos
FlutterMacOS:
@@ -153,6 +84,8 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/protocol_handler/macos
screen_retriever:
:path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos
+ sentry_flutter:
+ :path: Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos
share_plus:
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
shared_preferences_foundation:
@@ -167,27 +100,16 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos
SPEC CHECKSUMS:
- Firebase: 07150e75d142fb9399f6777fa56a187b17f833a0
- firebase_core: 559d892df9267acc6b7254d46fb3041866777509
- firebase_crashlytics: 5c146808f99644445d69c3dc2eb20324717edd00
- FirebaseCore: f86a1394906b97ac445ae49c92552a9425831bed
- FirebaseCoreExtension: d3f1ea3725fb41f56e8fbfb29eeaff54e7ffb8f6
- FirebaseCoreInternal: 2f4bee5ed00301b5e56da0849268797a2dd31fb4
- FirebaseCrashlytics: c4d111b7430c49744c74bcc6346ea00868661ac8
- FirebaseInstallations: cae95cab0f965ce05b805189de1d4c70b11c76fb
- FirebaseSessions: ee59a7811bef4c15f65ef6472f3210faa293f9c8
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
- GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2
- GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084
mobile_scanner: ed7618fb749adc6574563e053f3b8e5002c13994
- nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
- PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
- PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265
protocol_handler: 587e1caf6c0b92ce351ab14081968dae49cb8cc6
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
+ Sentry: 39d57e691e311bdb73bc1ab5bbebbd6bc890050d
+ sentry_flutter: b2feefdad5b0f06602347172bc7257e8e9da5562
+ SentryPrivate: 48712023cdfd523735c2edb6b06bedf26c4730a3
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c
sqlite3: 7afcf055d3700254769a4dcba56f27d26b5515c9
diff --git a/macos/Runner/GoogleService-Info.plist b/macos/Runner/GoogleService-Info.plist
deleted file mode 100644
index d29f32df..00000000
--- a/macos/Runner/GoogleService-Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- API_KEY
- AIzaSyDs7pee9vjdKfUYFbJvHo8rDwqp36dkPRI
- GCM_SENDER_ID
- 372003342382
- PLIST_VERSION
- 1
- BUNDLE_ID
- com.hiddify.hiddify.RunnerTests
- PROJECT_ID
- hiddify-flutter
- STORAGE_BUCKET
- hiddify-flutter.appspot.com
- IS_ADS_ENABLED
-
- IS_ANALYTICS_ENABLED
-
- IS_APPINVITE_ENABLED
-
- IS_GCM_ENABLED
-
- IS_SIGNIN_ENABLED
-
- GOOGLE_APP_ID
- 1:372003342382:ios:dd40035472392b346fb7bf
-
-
\ No newline at end of file
diff --git a/macos/firebase_app_id_file.json b/macos/firebase_app_id_file.json
deleted file mode 100644
index 95ec1070..00000000
--- a/macos/firebase_app_id_file.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_generated_by": "FlutterFire CLI",
- "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
- "GOOGLE_APP_ID": "1:372003342382:ios:dd40035472392b346fb7bf",
- "FIREBASE_PROJECT_ID": "hiddify-flutter",
- "GCM_SENDER_ID": "372003342382"
-}
\ No newline at end of file
diff --git a/pubspec.lock b/pubspec.lock
index dc6eaff8..0c3767c3 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -9,14 +9,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "60.0.0"
- _flutterfire_internals:
- dependency: transitive
- description:
- name: _flutterfire_internals
- sha256: "1a5e13736d59235ce0139621b4bbe29bc89839e202409081bc667eb3cd20674c"
- url: "https://pub.dev"
- source: hosted
- version: "1.3.5"
accessibility_tools:
dependency: "direct main"
description:
@@ -377,46 +369,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.1.4"
- firebase_core:
- dependency: "direct main"
- description:
- name: firebase_core
- sha256: c78132175edda4bc532a71e01a32964e4b4fcf53de7853a422d96dac3725f389
- url: "https://pub.dev"
- source: hosted
- version: "2.15.1"
- firebase_core_platform_interface:
- dependency: transitive
- description:
- name: firebase_core_platform_interface
- sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2
- url: "https://pub.dev"
- source: hosted
- version: "4.8.0"
- firebase_core_web:
- dependency: transitive
- description:
- name: firebase_core_web
- sha256: "4cf4d2161530332ddc3c562f19823fb897ff37a9a774090d28df99f47370e973"
- url: "https://pub.dev"
- source: hosted
- version: "2.7.0"
- firebase_crashlytics:
- dependency: "direct main"
- description:
- name: firebase_crashlytics
- sha256: fd9e1a1cb7cce3f9dd2358d8363d235f25f056981e23a333db1e57eca693913f
- url: "https://pub.dev"
- source: hosted
- version: "3.3.5"
- firebase_crashlytics_platform_interface:
- dependency: transitive
- description:
- name: firebase_crashlytics_platform_interface
- sha256: "0d19ef23cf7a917a357d2eb1807338ec536ec3232e729ebd769f5bb2aba9e085"
- url: "https://pub.dev"
- source: hosted
- version: "3.6.5"
fixnum:
dependency: transitive
description:
@@ -1093,6 +1045,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.1.9"
+ sentry:
+ dependency: transitive
+ description:
+ name: sentry
+ sha256: "830667eadc0398fea3a3424ed1b74568e2db603a42758d0922e2f2974ce55a60"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.10.1"
+ sentry_flutter:
+ dependency: "direct main"
+ description:
+ name: sentry_flutter
+ sha256: "6730f41b304c6fb0fa590dacccaf73ba11082fc64b274cfe8a79776f2b95309c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.10.1"
share_plus:
dependency: "direct main"
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 9c175a6e..6ddadd64 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -54,6 +54,7 @@ dependencies:
url_launcher: ^6.1.14
vclibs: ^0.1.0
launch_at_startup: ^0.2.2
+ sentry_flutter: ^7.10.1
# utils
combine: ^0.5.6
@@ -78,8 +79,6 @@ dependencies:
sliver_tools: ^0.2.12
flutter_adaptive_scaffold: ^0.1.7+1
humanizer: ^2.2.0
- firebase_crashlytics: ^3.3.5
- firebase_core: ^2.15.1
dev_dependencies:
flutter_test:
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index f1ddd719..01d8a783 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -6,9 +6,9 @@
#include "generated_plugin_registrant.h"
-#include
#include
#include
+#include
#include
#include
#include
@@ -17,12 +17,12 @@
#include
void RegisterPlugins(flutter::PluginRegistry* registry) {
- FirebaseCorePluginCApiRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
ProtocolHandlerPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ProtocolHandlerPlugin"));
ScreenRetrieverPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
+ SentryFlutterPluginRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index 3e5c6592..0bd3c28a 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -3,9 +3,9 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
- firebase_core
protocol_handler
screen_retriever
+ sentry_flutter
share_plus
sqlite3_flutter_libs
tray_manager