mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-22 11:39:22 +00:00
Added push notifications, FCM.
This commit is contained in:
parent
78056072d4
commit
ff6e4d58f7
18 changed files with 259 additions and 16 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -97,4 +97,7 @@ android/app/.cxx/**
|
||||||
ios/Flutter/.last_build_id
|
ios/Flutter/.last_build_id
|
||||||
/lib/generated/**
|
/lib/generated/**
|
||||||
#**#
|
#**#
|
||||||
/**/#**#
|
/**/#**#
|
||||||
|
|
||||||
|
**/google-services.json
|
||||||
|
**/GoogleService-Info.plist
|
|
@ -24,6 +24,10 @@ if (flutterVersionName == null) {
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
|
if (file("./google-services.json").exists()) {
|
||||||
|
apply plugin: 'com.google.gms.google-services'
|
||||||
|
}
|
||||||
|
|
||||||
def keystoreProperties = new Properties()
|
def keystoreProperties = new Properties()
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
if (keystorePropertiesFile.exists()) {
|
if (keystorePropertiesFile.exists()) {
|
||||||
|
@ -83,4 +87,6 @@ dependencies {
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
androidTestImplementation 'androidx.test:runner:1.1.1'
|
androidTestImplementation 'androidx.test:runner:1.1.1'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
|
||||||
|
implementation 'com.google.firebase:firebase-core:19.0.0'
|
||||||
|
implementation 'com.google.firebase:firebase-messaging:19.0.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
android:name=".Application"
|
||||||
android:label="Cake Wallet"
|
android:label="Cake Wallet"
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:fullBackupContent="false"
|
android:fullBackupContent="false"
|
||||||
|
@ -29,7 +30,6 @@
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="flutterEmbedding"
|
android:name="flutterEmbedding"
|
||||||
android:value="2" />
|
android:value="2" />
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.cakewallet.cake_wallet;
|
||||||
|
|
||||||
|
import io.flutter.app.FlutterApplication;
|
||||||
|
import io.flutter.plugin.common.PluginRegistry;
|
||||||
|
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
|
||||||
|
import io.flutter.plugins.GeneratedPluginRegistrant;
|
||||||
|
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
|
||||||
|
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;
|
||||||
|
|
||||||
|
public class Application extends FlutterApplication implements PluginRegistrantCallback {
|
||||||
|
@Override
|
||||||
|
public void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
FlutterFirebaseMessagingService.setPluginRegistrant(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerWith(PluginRegistry registry) {
|
||||||
|
FirebaseMessagingPlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ buildscript {
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.5.4'
|
classpath 'com.android.tools.build:gradle:3.5.4'
|
||||||
|
classpath 'com.google.gms:google-services:4.3.8'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ target 'Runner' do
|
||||||
|
|
||||||
# Cake Wallet (Legacy)
|
# Cake Wallet (Legacy)
|
||||||
pod 'CryptoSwift'
|
pod 'CryptoSwift'
|
||||||
|
pod 'Firebase/Messaging', '6.33.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
post_install do |installer|
|
post_install do |installer|
|
||||||
|
|
|
@ -62,18 +62,84 @@ PODS:
|
||||||
- file_picker (0.0.1):
|
- file_picker (0.0.1):
|
||||||
- DKImagePickerController/PhotoGallery
|
- DKImagePickerController/PhotoGallery
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- Firebase/CoreOnly (6.33.0):
|
||||||
|
- FirebaseCore (= 6.10.3)
|
||||||
|
- Firebase/Messaging (6.33.0):
|
||||||
|
- Firebase/CoreOnly
|
||||||
|
- FirebaseMessaging (~> 4.7.0)
|
||||||
|
- firebase_core (0.5.3):
|
||||||
|
- Firebase/CoreOnly (~> 6.33.0)
|
||||||
|
- Flutter
|
||||||
|
- firebase_messaging (7.0.3):
|
||||||
|
- Firebase/CoreOnly (~> 6.33.0)
|
||||||
|
- Firebase/Messaging (~> 6.33.0)
|
||||||
|
- firebase_core
|
||||||
|
- Flutter
|
||||||
|
- FirebaseCore (6.10.3):
|
||||||
|
- FirebaseCoreDiagnostics (~> 1.6)
|
||||||
|
- GoogleUtilities/Environment (~> 6.7)
|
||||||
|
- GoogleUtilities/Logger (~> 6.7)
|
||||||
|
- FirebaseCoreDiagnostics (1.7.0):
|
||||||
|
- GoogleDataTransport (~> 7.4)
|
||||||
|
- GoogleUtilities/Environment (~> 6.7)
|
||||||
|
- GoogleUtilities/Logger (~> 6.7)
|
||||||
|
- nanopb (~> 1.30906.0)
|
||||||
|
- FirebaseInstallations (1.7.0):
|
||||||
|
- FirebaseCore (~> 6.10)
|
||||||
|
- GoogleUtilities/Environment (~> 6.7)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 6.7)
|
||||||
|
- PromisesObjC (~> 1.2)
|
||||||
|
- FirebaseInstanceID (4.8.0):
|
||||||
|
- FirebaseCore (~> 6.10)
|
||||||
|
- FirebaseInstallations (~> 1.6)
|
||||||
|
- GoogleUtilities/Environment (~> 6.7)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 6.7)
|
||||||
|
- FirebaseMessaging (4.7.1):
|
||||||
|
- FirebaseCore (~> 6.10)
|
||||||
|
- FirebaseInstanceID (~> 4.7)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (~> 6.7)
|
||||||
|
- GoogleUtilities/Environment (~> 6.7)
|
||||||
|
- GoogleUtilities/Reachability (~> 6.7)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 6.7)
|
||||||
|
- Protobuf (>= 3.9.2, ~> 3.9)
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- flutter_secure_storage (3.3.1):
|
- flutter_secure_storage (3.3.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- GoogleDataTransport (7.5.1):
|
||||||
|
- nanopb (~> 1.30906.0)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (6.7.2):
|
||||||
|
- GoogleUtilities/Environment
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/Network
|
||||||
|
- GoogleUtilities/Environment (6.7.2):
|
||||||
|
- PromisesObjC (~> 1.2)
|
||||||
|
- GoogleUtilities/Logger (6.7.2):
|
||||||
|
- GoogleUtilities/Environment
|
||||||
|
- GoogleUtilities/Network (6.7.2):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- "GoogleUtilities/NSData+zlib"
|
||||||
|
- GoogleUtilities/Reachability
|
||||||
|
- "GoogleUtilities/NSData+zlib (6.7.2)"
|
||||||
|
- GoogleUtilities/Reachability (6.7.2):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/UserDefaults (6.7.2):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
- local_auth (0.0.1):
|
- local_auth (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- MTBBarcodeScanner (5.0.11)
|
- MTBBarcodeScanner (5.0.11)
|
||||||
|
- nanopb (1.30906.0):
|
||||||
|
- nanopb/decode (= 1.30906.0)
|
||||||
|
- nanopb/encode (= 1.30906.0)
|
||||||
|
- nanopb/decode (1.30906.0)
|
||||||
|
- nanopb/encode (1.30906.0)
|
||||||
- package_info (0.0.1):
|
- package_info (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- path_provider (0.0.1):
|
- path_provider (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- "permission_handler (5.1.0+2)":
|
- "permission_handler (5.1.0+2)":
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- PromisesObjC (1.2.12)
|
||||||
|
- Protobuf (3.17.0)
|
||||||
- Reachability (3.2)
|
- Reachability (3.2)
|
||||||
- SDWebImage (5.9.1):
|
- SDWebImage (5.9.1):
|
||||||
- SDWebImage/Core (= 5.9.1)
|
- SDWebImage/Core (= 5.9.1)
|
||||||
|
@ -97,6 +163,9 @@ DEPENDENCIES:
|
||||||
- devicelocale (from `.symlinks/plugins/devicelocale/ios`)
|
- devicelocale (from `.symlinks/plugins/devicelocale/ios`)
|
||||||
- esys_flutter_share (from `.symlinks/plugins/esys_flutter_share/ios`)
|
- esys_flutter_share (from `.symlinks/plugins/esys_flutter_share/ios`)
|
||||||
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
||||||
|
- Firebase/Messaging (= 6.33.0)
|
||||||
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||||
|
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
||||||
- local_auth (from `.symlinks/plugins/local_auth/ios`)
|
- local_auth (from `.symlinks/plugins/local_auth/ios`)
|
||||||
|
@ -113,7 +182,18 @@ SPEC REPOS:
|
||||||
- CryptoSwift
|
- CryptoSwift
|
||||||
- DKImagePickerController
|
- DKImagePickerController
|
||||||
- DKPhotoGallery
|
- DKPhotoGallery
|
||||||
|
- Firebase
|
||||||
|
- FirebaseCore
|
||||||
|
- FirebaseCoreDiagnostics
|
||||||
|
- FirebaseInstallations
|
||||||
|
- FirebaseInstanceID
|
||||||
|
- FirebaseMessaging
|
||||||
|
- GoogleDataTransport
|
||||||
|
- GoogleUtilities
|
||||||
- MTBBarcodeScanner
|
- MTBBarcodeScanner
|
||||||
|
- nanopb
|
||||||
|
- PromisesObjC
|
||||||
|
- Protobuf
|
||||||
- Reachability
|
- Reachability
|
||||||
- SDWebImage
|
- SDWebImage
|
||||||
- SwiftProtobuf
|
- SwiftProtobuf
|
||||||
|
@ -132,6 +212,10 @@ EXTERNAL SOURCES:
|
||||||
:path: ".symlinks/plugins/esys_flutter_share/ios"
|
:path: ".symlinks/plugins/esys_flutter_share/ios"
|
||||||
file_picker:
|
file_picker:
|
||||||
:path: ".symlinks/plugins/file_picker/ios"
|
:path: ".symlinks/plugins/file_picker/ios"
|
||||||
|
firebase_core:
|
||||||
|
:path: ".symlinks/plugins/firebase_core/ios"
|
||||||
|
firebase_messaging:
|
||||||
|
:path: ".symlinks/plugins/firebase_messaging/ios"
|
||||||
Flutter:
|
Flutter:
|
||||||
:path: Flutter
|
:path: Flutter
|
||||||
flutter_secure_storage:
|
flutter_secure_storage:
|
||||||
|
@ -163,13 +247,26 @@ SPEC CHECKSUMS:
|
||||||
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
||||||
esys_flutter_share: 403498dab005b36ce1f8d7aff377e81f0621b0b4
|
esys_flutter_share: 403498dab005b36ce1f8d7aff377e81f0621b0b4
|
||||||
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
|
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
|
||||||
|
Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
|
||||||
|
firebase_core: 5d6a02f3d85acd5f8321c2d6d62877626a670659
|
||||||
|
firebase_messaging: 0aea2cd5885b65e19ede58ee3507f485c992cc75
|
||||||
|
FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
|
||||||
|
FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1
|
||||||
|
FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2
|
||||||
|
FirebaseInstanceID: bd3ffc24367f901a43c063b36c640b345a4a5dd1
|
||||||
|
FirebaseMessaging: 5eca4ef173de76253352511aafef774caa1cba2a
|
||||||
Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
|
Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
|
||||||
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
|
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
|
||||||
|
GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
|
||||||
|
GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
|
||||||
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
|
local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
|
||||||
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
|
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
|
||||||
|
nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
|
||||||
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
|
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
|
||||||
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
||||||
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
|
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
|
||||||
|
PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97
|
||||||
|
Protobuf: 7327d4444215b5f18e560a97f879ff5503c4581c
|
||||||
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
||||||
SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5
|
SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5
|
||||||
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
|
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
|
||||||
|
@ -179,6 +276,6 @@ SPEC CHECKSUMS:
|
||||||
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
|
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
|
||||||
webview_flutter: 9f491a9b5a66f2573946a389b2677987b0ff8c0b
|
webview_flutter: 9f491a9b5a66f2573946a389b2677987b0ff8c0b
|
||||||
|
|
||||||
PODFILE CHECKSUM: 5b5f101b119a1b6eb857c967d462832a9062dec4
|
PODFILE CHECKSUM: f316539722a6f9dbb0d0f1065a27fa7ea38c6f88
|
||||||
|
|
||||||
COCOAPODS: 1.9.3
|
COCOAPODS: 1.9.3
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
0C37B8B926678E9100C6E5A9 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0C37B8B826678E9100C6E5A9 /* GoogleService-Info.plist */; };
|
||||||
0C44A71A2518EF8000B570ED /* decrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C44A7192518EF8000B570ED /* decrypt.swift */; };
|
0C44A71A2518EF8000B570ED /* decrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C44A7192518EF8000B570ED /* decrypt.swift */; };
|
||||||
0C9D68C9264854B60011B691 /* secRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C9D68C8264854B60011B691 /* secRandom.swift */; };
|
0C9D68C9264854B60011B691 /* secRandom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C9D68C8264854B60011B691 /* secRandom.swift */; };
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||||
|
@ -19,6 +20,7 @@
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
0C37B8B826678E9100C6E5A9 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
0C400E0F25B21ABB0025E469 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
0C400E0F25B21ABB0025E469 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
|
||||||
0C44A7192518EF8000B570ED /* decrypt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = decrypt.swift; sourceTree = "<group>"; };
|
0C44A7192518EF8000B570ED /* decrypt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = decrypt.swift; sourceTree = "<group>"; };
|
||||||
0C9986A3251A932F00D566FD /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
0C9986A3251A932F00D566FD /* CryptoSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CryptoSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
@ -96,6 +98,7 @@
|
||||||
97C146E51CF9000F007C117D = {
|
97C146E51CF9000F007C117D = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
0C37B8B826678E9100C6E5A9 /* GoogleService-Info.plist */,
|
||||||
0C44A7182518EF4A00B570ED /* CakeWallet */,
|
0C44A7182518EF4A00B570ED /* CakeWallet */,
|
||||||
9740EEB11CF90186004384FC /* Flutter */,
|
9740EEB11CF90186004384FC /* Flutter */,
|
||||||
97C146F01CF9000F007C117D /* Runner */,
|
97C146F01CF9000F007C117D /* Runner */,
|
||||||
|
@ -191,6 +194,7 @@
|
||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
0C37B8B926678E9100C6E5A9 /* GoogleService-Info.plist in Resources */,
|
||||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
||||||
|
@ -365,6 +369,7 @@
|
||||||
CURRENT_PROJECT_VERSION = 41;
|
CURRENT_PROJECT_VERSION = 41;
|
||||||
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
EXCLUDED_SOURCE_FILE_NAMES = "\"$(SRCROOT)/Runner/GoogleService-Info.plist\"";
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
|
@ -508,6 +513,7 @@
|
||||||
CURRENT_PROJECT_VERSION = 41;
|
CURRENT_PROJECT_VERSION = 41;
|
||||||
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
EXCLUDED_SOURCE_FILE_NAMES = "\"$(SRCROOT)/Runner/GoogleService-Info.plist\"";
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
|
@ -543,6 +549,7 @@
|
||||||
CURRENT_PROJECT_VERSION = 41;
|
CURRENT_PROJECT_VERSION = 41;
|
||||||
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
DEVELOPMENT_TEAM = 32J6BB6VUS;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
EXCLUDED_SOURCE_FILE_NAMES = "\"$(SRCROOT)/Runner/GoogleService-Info.plist\"";
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"$(PROJECT_DIR)/Flutter",
|
"$(PROJECT_DIR)/Flutter",
|
||||||
|
|
|
@ -7,6 +7,10 @@ import Flutter
|
||||||
_ application: UIApplication,
|
_ application: UIApplication,
|
||||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
|
if #available(iOS 10.0, *) {
|
||||||
|
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
|
||||||
|
}
|
||||||
|
|
||||||
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
|
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
|
||||||
let legacyMigrationChannel = FlutterMethodChannel(
|
let legacyMigrationChannel = FlutterMethodChannel(
|
||||||
name: "com.cakewallet.cakewallet/legacy_wallet_migration",
|
name: "com.cakewallet.cakewallet/legacy_wallet_migration",
|
||||||
|
|
|
@ -37,6 +37,11 @@
|
||||||
<string>Enable Face ID for fast and secure access to wallets and private keys</string>
|
<string>Enable Face ID for fast and secure access to wallets and private keys</string>
|
||||||
<key>NSPhotoLibraryUsageDescription</key>
|
<key>NSPhotoLibraryUsageDescription</key>
|
||||||
<string>We need access to documents folder for get acces to open/save backup file</string>
|
<string>We need access to documents folder for get acces to open/save backup file</string>
|
||||||
|
<key>UIBackgroundModes</key>
|
||||||
|
<array>
|
||||||
|
<string>fetch</string>
|
||||||
|
<string>remote-notification</string>
|
||||||
|
</array>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile</key>
|
<key>UIMainStoryboardFile</key>
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict/>
|
<dict>
|
||||||
|
<key>aps-environment</key>
|
||||||
|
<string>development</string>
|
||||||
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -113,6 +113,7 @@ import 'package:cake_wallet/store/templates/exchange_template_store.dart';
|
||||||
import 'package:cake_wallet/entities/template.dart';
|
import 'package:cake_wallet/entities/template.dart';
|
||||||
import 'package:cake_wallet/exchange/exchange_template.dart';
|
import 'package:cake_wallet/exchange/exchange_template.dart';
|
||||||
import 'package:cake_wallet/.secrets.g.dart' as secrets;
|
import 'package:cake_wallet/.secrets.g.dart' as secrets;
|
||||||
|
import 'package:cake_wallet/entities/push_notifications_service.dart';
|
||||||
|
|
||||||
final getIt = GetIt.instance;
|
final getIt = GetIt.instance;
|
||||||
|
|
||||||
|
@ -232,6 +233,9 @@ Future setup(
|
||||||
settingsStore: getIt.get<SettingsStore>(),
|
settingsStore: getIt.get<SettingsStore>(),
|
||||||
fiatConvertationStore: getIt.get<FiatConversionStore>()));
|
fiatConvertationStore: getIt.get<FiatConversionStore>()));
|
||||||
|
|
||||||
|
|
||||||
|
getIt.registerFactory(() => PushNotificationsService());
|
||||||
|
|
||||||
getIt.registerFactory(() => DashboardViewModel(
|
getIt.registerFactory(() => DashboardViewModel(
|
||||||
balanceViewModel: getIt.get<BalanceViewModel>(),
|
balanceViewModel: getIt.get<BalanceViewModel>(),
|
||||||
appStore: getIt.get<AppStore>(),
|
appStore: getIt.get<AppStore>(),
|
||||||
|
@ -241,7 +245,8 @@ Future setup(
|
||||||
settingsStore: settingsStore,
|
settingsStore: settingsStore,
|
||||||
ordersSource: _ordersSource,
|
ordersSource: _ordersSource,
|
||||||
ordersStore: getIt.get<OrdersStore>(),
|
ordersStore: getIt.get<OrdersStore>(),
|
||||||
wyreViewModel: getIt.get<WyreViewModel>()));
|
wyreViewModel: getIt.get<WyreViewModel>(),
|
||||||
|
pushNotificationsService: getIt.get<PushNotificationsService>()));
|
||||||
|
|
||||||
getIt.registerFactory<AuthService>(() => AuthService(
|
getIt.registerFactory<AuthService>(() => AuthService(
|
||||||
secureStorage: getIt.get<FlutterSecureStorage>(),
|
secureStorage: getIt.get<FlutterSecureStorage>(),
|
||||||
|
|
45
lib/entities/push_notifications_service.dart
Normal file
45
lib/entities/push_notifications_service.dart
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
import 'dart:io';
|
||||||
|
import 'package:cake_wallet/main.dart';
|
||||||
|
import 'package:cake_wallet/utils/show_bar.dart';
|
||||||
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
|
|
||||||
|
class PushNotificationsService {
|
||||||
|
PushNotificationsService._();
|
||||||
|
|
||||||
|
factory PushNotificationsService() => _instance;
|
||||||
|
|
||||||
|
static final PushNotificationsService _instance = PushNotificationsService._();
|
||||||
|
static Future<dynamic> _onBackgroundMessage(Map<String, dynamic> message) async {}
|
||||||
|
final _firebaseMessaging = FirebaseMessaging();
|
||||||
|
bool _initialized = false;
|
||||||
|
|
||||||
|
Future<void> init() async {
|
||||||
|
if (_initialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_firebaseMessaging.requestNotificationPermissions();
|
||||||
|
_firebaseMessaging.configure(
|
||||||
|
onMessage: (message) async {
|
||||||
|
Map<dynamic, dynamic> alert = {};
|
||||||
|
String msg = '';
|
||||||
|
String title = '';
|
||||||
|
|
||||||
|
if (Platform.isIOS) {
|
||||||
|
alert = message['aps']['alert'] as Map<dynamic, dynamic> ?? <dynamic, dynamic>{};
|
||||||
|
msg = alert['body'] as String ?? '';
|
||||||
|
title = alert['title'] as String ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Platform.isAndroid) {
|
||||||
|
msg = message['notification']['body'] as String ?? '';
|
||||||
|
title = message['notification']['title'] as String ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
await showBar<void>(navigatorKey.currentContext, msg, titleText: title, duration: null);
|
||||||
|
},
|
||||||
|
onBackgroundMessage: _onBackgroundMessage);
|
||||||
|
|
||||||
|
_initialized = true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
|
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
|
||||||
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||||
import 'package:auto_size_text/auto_size_text.dart';
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,11 @@ import 'package:flushbar/flushbar.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
Future<T> showBar<T>(BuildContext context, String text,
|
Future<T> showBar<T>(BuildContext context, String messageText,
|
||||||
{bool isDark = false, Duration duration = const Duration(seconds: 1), bool isDismissible = true}) {
|
{bool isDark = false,
|
||||||
|
Duration duration = const Duration(seconds: 1),
|
||||||
|
bool isDismissible = true,
|
||||||
|
String titleText}) {
|
||||||
final bar = Flushbar<T>(
|
final bar = Flushbar<T>(
|
||||||
boxShadows: [
|
boxShadows: [
|
||||||
BoxShadow(
|
BoxShadow(
|
||||||
|
@ -14,9 +17,14 @@ Future<T> showBar<T>(BuildContext context, String text,
|
||||||
backgroundColor: isDark ? Colors.black : Colors.white,
|
backgroundColor: isDark ? Colors.black : Colors.white,
|
||||||
borderRadius: 35,
|
borderRadius: 35,
|
||||||
margin: EdgeInsets.all(50),
|
margin: EdgeInsets.all(50),
|
||||||
messageText: Text(text,
|
titleText: titleText != null
|
||||||
|
? Text(titleText,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(color: isDark ? Colors.white : Colors.black, fontWeight: FontWeight.bold, fontSize: 24.0))
|
||||||
|
: null,
|
||||||
|
messageText: Text(messageText,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(color: isDark ? Colors.white : Colors.black)),
|
style: TextStyle(color: isDark ? Colors.white : Colors.black, fontSize: 16)),
|
||||||
duration: duration,
|
duration: duration,
|
||||||
isDismissible: isDismissible,
|
isDismissible: isDismissible,
|
||||||
flushbarPosition: FlushbarPosition.TOP,
|
flushbarPosition: FlushbarPosition.TOP,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:cake_wallet/core/transaction_history.dart';
|
import 'package:cake_wallet/core/transaction_history.dart';
|
||||||
import 'package:cake_wallet/entities/balance.dart';
|
import 'package:cake_wallet/entities/balance.dart';
|
||||||
import 'package:cake_wallet/entities/order.dart';
|
import 'package:cake_wallet/entities/order.dart';
|
||||||
|
import 'package:cake_wallet/entities/push_notifications_service.dart';
|
||||||
import 'package:cake_wallet/monero/account.dart';
|
import 'package:cake_wallet/monero/account.dart';
|
||||||
import 'package:cake_wallet/monero/monero_balance.dart';
|
import 'package:cake_wallet/monero/monero_balance.dart';
|
||||||
import 'package:cake_wallet/monero/monero_transaction_info.dart';
|
import 'package:cake_wallet/monero/monero_transaction_info.dart';
|
||||||
|
@ -44,7 +45,9 @@ abstract class DashboardViewModelBase with Store {
|
||||||
this.settingsStore,
|
this.settingsStore,
|
||||||
this.ordersSource,
|
this.ordersSource,
|
||||||
this.ordersStore,
|
this.ordersStore,
|
||||||
this.wyreViewModel}) {
|
this.wyreViewModel,
|
||||||
|
PushNotificationsService pushNotificationsService}) {
|
||||||
|
_pushNotificationsService = pushNotificationsService;
|
||||||
filterItems = {
|
filterItems = {
|
||||||
S.current.transactions: [
|
S.current.transactions: [
|
||||||
FilterItem(
|
FilterItem(
|
||||||
|
@ -133,6 +136,8 @@ abstract class DashboardViewModelBase with Store {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Future.delayed(Duration(seconds: 2), () => _pushNotificationsService.init());
|
||||||
}
|
}
|
||||||
|
|
||||||
@observable
|
@observable
|
||||||
|
@ -227,18 +232,20 @@ abstract class DashboardViewModelBase with Store {
|
||||||
|
|
||||||
bool get isBuyEnabled => settingsStore.isBitcoinBuyEnabled;
|
bool get isBuyEnabled => settingsStore.isBitcoinBuyEnabled;
|
||||||
|
|
||||||
|
PushNotificationsService _pushNotificationsService;
|
||||||
|
|
||||||
ReactionDisposer _onMoneroAccountChangeReaction;
|
ReactionDisposer _onMoneroAccountChangeReaction;
|
||||||
|
|
||||||
ReactionDisposer _onMoneroBalanceChangeReaction;
|
ReactionDisposer _onMoneroBalanceChangeReaction;
|
||||||
|
|
||||||
|
@observable
|
||||||
|
bool isOutdatedElectrumWallet;
|
||||||
|
|
||||||
Future<void> reconnect() async {
|
Future<void> reconnect() async {
|
||||||
final node = appStore.settingsStore.getCurrentNode(wallet.type);
|
final node = appStore.settingsStore.getCurrentNode(wallet.type);
|
||||||
await wallet.connectToNode(node: node);
|
await wallet.connectToNode(node: node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@observable
|
|
||||||
bool isOutdatedElectrumWallet;
|
|
||||||
|
|
||||||
@action
|
@action
|
||||||
void _onWalletChange(
|
void _onWalletChange(
|
||||||
WalletBase<Balance, TransactionHistoryBase<TransactionInfo>,
|
WalletBase<Balance, TransactionHistoryBase<TransactionInfo>,
|
||||||
|
|
34
pubspec.lock
34
pubspec.lock
|
@ -70,7 +70,7 @@ packages:
|
||||||
path: "."
|
path: "."
|
||||||
ref: cake
|
ref: cake
|
||||||
resolved-ref: "02fef082f20af13de00b4e64efb93a2c1e5e1cf2"
|
resolved-ref: "02fef082f20af13de00b4e64efb93a2c1e5e1cf2"
|
||||||
url: "git@github.com:cake-tech/bech32.git"
|
url: "https://github.com/cake-tech/bech32.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.2.0"
|
version: "0.2.0"
|
||||||
bip32:
|
bip32:
|
||||||
|
@ -92,8 +92,8 @@ packages:
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: cake
|
ref: cake
|
||||||
resolved-ref: b3ab2926c665f0e68b74a4a5f31059f7fcd817b7
|
resolved-ref: cbabfd87b6ce3cae6051a3e86ddb56e7a934e188
|
||||||
url: "git@github.com:cake-tech/bitcoin_flutter.git"
|
url: "https://github.com/cake-tech/bitcoin_flutter.git"
|
||||||
source: git
|
source: git
|
||||||
version: "2.0.2"
|
version: "2.0.2"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
|
@ -362,6 +362,34 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.0-nullsafety.2"
|
version: "3.0.0-nullsafety.2"
|
||||||
|
firebase_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.5.3"
|
||||||
|
firebase_core_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core_platform_interface
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.1.0"
|
||||||
|
firebase_core_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core_web
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.1+1"
|
||||||
|
firebase_messaging:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_messaging
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "7.0.3"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -78,6 +78,7 @@ dependencies:
|
||||||
file_picker: ^3.0.0-nullsafety.2
|
file_picker: ^3.0.0-nullsafety.2
|
||||||
unorm_dart: ^0.2.0
|
unorm_dart: ^0.2.0
|
||||||
permission_handler: ^5.0.1+1
|
permission_handler: ^5.0.1+1
|
||||||
|
firebase_messaging: ^7.0.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
Loading…
Reference in a new issue