diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index ed4b8a1..2c51e06 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -30,19 +30,7 @@ jobs: touch ../tm-plugin/tm_linux/assets/x mkdir -p assets/google_fonts - - name: Cache geo files - id: cache-geo - uses: actions/cache@v4 - with: - path: | - assets/geo/simplified_geoip.dat - assets/geo/simplified_geosite.dat - key: geo-files-${{ runner.os }} - restore-keys: | - geo-files- - - name: Download geo - if: steps.cache-geo.outputs.cache-hit != 'true' run: | mkdir -p assets/geo curl -O "https://github.com/5VNetwork/process-geo/releases/download/latest/simplified_geoip.dat" diff --git a/lib/app/settings/general/general.dart b/lib/app/settings/general/general.dart index 045fc0d..c01e8d7 100644 --- a/lib/app/settings/general/general.dart +++ b/lib/app/settings/general/general.dart @@ -31,9 +31,10 @@ import 'package:vx/pref_helper.dart'; import 'package:vx/main.dart'; import 'package:vx/utils/node_test_service.dart'; import 'package:vx/utils/geodata.dart'; -import 'package:vx/widgets/circular_progress_indicator.dart'; import 'package:flutter_common/services/auto_update.dart'; -// import 'package:flutter_sparkle/flutter_sparkle.dart'; +import 'package:vx/utils/logger.dart'; +import 'package:vx/widgets/circular_progress_indicator.dart'; +import 'package:flutter_sparkle/flutter_sparkle.dart'; class GeneralSettingPage extends StatelessWidget { const GeneralSettingPage({super.key, this.showAppBar = true}); @@ -138,21 +139,21 @@ class GeneralSettingPage extends StatelessWidget { child: AlwaysOnSetting(), ), ]), - // if (isPkg) - // Column(children: [ - // Divider(), - // Padding( - // padding: EdgeInsets.only( - // top: 10, bottom: 10, left: 16, right: 16), - // child: TextButton( - // onPressed: () async { - // FlutterSparkle.checkMacUpdate(isProduction() - // ? 'https://download.5vnetwork.com/appcast.xml' - // : 'https://pub-f52ca93bef2c463eabe42dfcf7d05b21.r2.dev/appcast.xml'); - // }, - // child: Text(AppLocalizations.of(context)!.checkUpdate), - // )) - // ]) + if (isPkg) + Column(children: [ + Divider(), + Padding( + padding: EdgeInsets.only( + top: 10, bottom: 10, left: 16, right: 16), + child: TextButton( + onPressed: () async { + FlutterSparkle.checkMacUpdate(isProduction() + ? 'https://download.5vnetwork.com/appcast.xml' + : 'https://pub-f52ca93bef2c463eabe42dfcf7d05b21.r2.dev/appcast.xml'); + }, + child: Text(AppLocalizations.of(context)!.checkUpdate), + )) + ]) ], ), ), diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index c69200a..4732587 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -14,6 +14,7 @@ import firebase_core import firebase_messaging import flutter_local_notifications import flutter_secure_storage_macos +import flutter_sparkle import google_sign_in_macos import in_app_purchase_storekit import in_app_review @@ -41,6 +42,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterSparklePlugin.register(with: registry.registrar(forPlugin: "FlutterSparklePlugin")) GoogleSignInMacosPlugin.register(with: registry.registrar(forPlugin: "GoogleSignInMacosPlugin")) InAppPurchasePlugin.register(with: registry.registrar(forPlugin: "InAppPurchasePlugin")) InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin")) diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 766541f..020ef26 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -46,6 +46,9 @@ PODS: - FlutterMacOS - flutter_secure_storage_macos (6.1.3): - FlutterMacOS + - flutter_sparkle (0.0.2): + - FlutterMacOS + - Sparkle - FlutterMacOS (1.0.0) - google_sign_in_macos (0.0.1): - FlutterMacOS @@ -106,6 +109,7 @@ PODS: - FlutterMacOS - sign_in_with_apple (0.0.1): - FlutterMacOS + - Sparkle (2.8.1) - sqlite3 (3.50.4): - sqlite3/common (= 3.50.4) - sqlite3/common (3.50.4) @@ -150,6 +154,7 @@ DEPENDENCIES: - firebase_messaging (from `Flutter/ephemeral/.symlinks/plugins/firebase_messaging/macos`) - flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`) - flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`) + - flutter_sparkle (from `Flutter/ephemeral/.symlinks/plugins/flutter_sparkle/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - google_sign_in_macos (from `Flutter/ephemeral/.symlinks/plugins/google_sign_in_macos/macos`) - in_app_purchase_storekit (from `Flutter/ephemeral/.symlinks/plugins/in_app_purchase_storekit/darwin`) @@ -179,6 +184,7 @@ SPEC REPOS: - GoogleUtilities - nanopb - PromisesObjC + - Sparkle - sqlite3 EXTERNAL SOURCES: @@ -200,6 +206,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos flutter_secure_storage_macos: :path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos + flutter_sparkle: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_sparkle/macos FlutterMacOS: :path: Flutter/ephemeral google_sign_in_macos: @@ -250,6 +258,7 @@ SPEC CHECKSUMS: FirebaseMessaging: d33971b7bb252745ea6cd31ab190d1a1df4b8ed5 flutter_local_notifications: 4bf37a31afde695b56091b4ae3e4d9c7a7e6cda0 flutter_secure_storage_macos: 7f45e30f838cf2659862a4e4e3ee1c347c2b3b54 + flutter_sparkle: 550cfddada5e1f60e85406c27525f763872ec9b7 FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 google_sign_in_macos: c8612ccbd6fe87ca383a977edcf18437c9cacb70 GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 @@ -266,6 +275,7 @@ SPEC CHECKSUMS: screen_retriever_macos: 452e51764a9e1cdb74b3c541238795849f21557f shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 sign_in_with_apple: 6673c03c9e3643f6c8d33601943fbfa9ae99f94e + Sparkle: a346a4341537c625955751ed3ae4b340b68551fa sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1 tm_macos: fca0f08e7b9492c23ecc74c11da166bf56714a24 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index ea16303..8d93c77 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -21,11 +21,11 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 156EB8982E8AED3000DCC6A4 /* PacketTunnel.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 15EEE81F2D6319C100642457 /* PacketTunnel.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 15715F4D2D290435007C66D9 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15F0A1EB2D1EFA2700E9C182 /* libresolv.tbd */; }; 1572EE492EC32553008DEDEC /* tm.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1572EE482EC32553008DEDEC /* tm.xcframework */; }; 1572EE4A2EC32553008DEDEC /* tm.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1572EE482EC32553008DEDEC /* tm.xcframework */; }; 1572EE4B2EC32553008DEDEC /* tm.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1572EE482EC32553008DEDEC /* tm.xcframework */; }; + 1572EFEC2EC33041008DEDEC /* com.5vnetwork.x.system.se.systemextension in Embed System Extensions */ = {isa = PBXBuildFile; fileRef = 15A130F12E71D3C4003E5632 /* com.5vnetwork.x.system.se.systemextension */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 15A130F22E71D3C4003E5632 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15F0A1DB2D1EF8E100E9C182 /* NetworkExtension.framework */; }; 15A1310E2E71D492003E5632 /* libresolv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 15F0A1EB2D1EFA2700E9C182 /* libresolv.tbd */; }; 15EEE7902D63071800642457 /* MacosHostApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15EEE78E2D63071800642457 /* MacosHostApi.swift */; }; @@ -44,26 +44,12 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 156EB8992E8AED3000DCC6A4 /* PBXContainerItemProxy */ = { + 1572EFED2EC33041008DEDEC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 33CC10E52044A3C60003C045 /* Project object */; proxyType = 1; - remoteGlobalIDString = 15EEE81E2D6319C100642457; - remoteInfo = PacketTunnel; - }; - 156F23E62E85A4B70093AA39 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 15EEE81E2D6319C100642457; - remoteInfo = PacketTunnel; - }; - 156F248B2E85B5AF0093AA39 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 15EEE81E2D6319C100642457; - remoteInfo = PacketTunnel; + remoteGlobalIDString = 15A130F02E71D3C4003E5632; + remoteInfo = SystemExtension; }; 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -82,15 +68,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - 156EB89B2E8AED3000DCC6A4 /* Embed Foundation Extensions */ = { + 1572EFEF2EC33041008DEDEC /* Embed System Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; + dstPath = "$(SYSTEM_EXTENSIONS_FOLDER_PATH)"; + dstSubfolderSpec = 16; files = ( - 156EB8982E8AED3000DCC6A4 /* PacketTunnel.appex in Embed Foundation Extensions */, + 1572EFEC2EC33041008DEDEC /* com.5vnetwork.x.system.se.systemextension in Embed System Extensions */, ); - name = "Embed Foundation Extensions"; + name = "Embed System Extensions"; runOnlyForDeploymentPostprocessing = 0; }; 15A130EC2E71D135003E5632 /* Embed Frameworks */ = { @@ -506,15 +492,13 @@ 837C294434FC697072AC9A70 /* [CP] Copy Pods Resources */, 15A1F10C2E71A36C00AF435D /* Embed ExtensionKit Extensions */, 15A130EC2E71D135003E5632 /* Embed Frameworks */, - 156EB89B2E8AED3000DCC6A4 /* Embed Foundation Extensions */, + 1572EFEF2EC33041008DEDEC /* Embed System Extensions */, ); buildRules = ( ); dependencies = ( 33CC11202044C79F0003C045 /* PBXTargetDependency */, - 156F23E72E85A4B70093AA39 /* PBXTargetDependency */, - 156F248C2E85B5AF0093AA39 /* PBXTargetDependency */, - 156EB89A2E8AED3000DCC6A4 /* PBXTargetDependency */, + 1572EFEE2EC33041008DEDEC /* PBXTargetDependency */, ); name = Runner; productName = Runner; @@ -771,20 +755,10 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 156EB89A2E8AED3000DCC6A4 /* PBXTargetDependency */ = { + 1572EFEE2EC33041008DEDEC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 15EEE81E2D6319C100642457 /* PacketTunnel */; - targetProxy = 156EB8992E8AED3000DCC6A4 /* PBXContainerItemProxy */; - }; - 156F23E72E85A4B70093AA39 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 15EEE81E2D6319C100642457 /* PacketTunnel */; - targetProxy = 156F23E62E85A4B70093AA39 /* PBXContainerItemProxy */; - }; - 156F248C2E85B5AF0093AA39 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 15EEE81E2D6319C100642457 /* PacketTunnel */; - targetProxy = 156F248B2E85B5AF0093AA39 /* PBXContainerItemProxy */; + target = 15A130F02E71D3C4003E5632 /* SystemExtension */; + targetProxy = 1572EFED2EC33041008DEDEC /* PBXContainerItemProxy */; }; 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -2457,7 +2431,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( @@ -2507,7 +2481,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( @@ -2558,7 +2532,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( @@ -2611,7 +2585,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( @@ -2663,7 +2637,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", @@ -2712,7 +2686,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", @@ -2762,7 +2736,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", @@ -2811,7 +2785,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", @@ -2861,7 +2835,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", @@ -2908,7 +2882,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", @@ -2955,7 +2929,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 15.2; - MARKETING_VERSION = 2.3.2; + MARKETING_VERSION = 2.5.5; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ( "-ObjC", diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist index 0feab72..a98b66a 100644 --- a/macos/Runner/Info.plist +++ b/macos/Runner/Info.plist @@ -48,11 +48,11 @@ MainMenu NSPrincipalClass NSApplication - + https://download.5vnetwork.com/appcast.xml diff --git a/pubspec.lock b/pubspec.lock index ef7f8be..3c05985 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -681,6 +681,15 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + flutter_sparkle: + dependency: "direct main" + description: + path: "." + ref: HEAD + resolved-ref: edd0da233da8df058e46d7d1ea1fa572e28ba170 + url: "https://github.com/5vnetwork/flutter_sparkle.git" + source: git + version: "0.0.2" flutter_staggered_grid_view: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 6077999..28f9b06 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -116,6 +116,9 @@ dependencies: git: url: https://github.com/5vnetwork/flutter_common.git ref: main + flutter_sparkle: + git: + url: https://github.com/5vnetwork/flutter_sparkle.git dev_dependencies: flutter_launcher_icons: ^0.14.3