🐛 Bug fixes and optimization
This commit is contained in:
parent
e88a0ddb22
commit
6acbd1ee9e
30
.metadata
30
.metadata
@ -4,7 +4,7 @@
|
|||||||
# This file should be version controlled and should not be manually edited.
|
# This file should be version controlled and should not be manually edited.
|
||||||
|
|
||||||
version:
|
version:
|
||||||
revision: "54e66469a933b60ddf175f858f82eaeb97e48c8d"
|
revision: "a14f74ff3a1cbd521163c5f03d68113d50af93d3"
|
||||||
channel: "stable"
|
channel: "stable"
|
||||||
|
|
||||||
project_type: app
|
project_type: app
|
||||||
@ -13,26 +13,26 @@ project_type: app
|
|||||||
migration:
|
migration:
|
||||||
platforms:
|
platforms:
|
||||||
- platform: root
|
- platform: root
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
- platform: android
|
- platform: android
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
- platform: ios
|
- platform: ios
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
- platform: linux
|
- platform: linux
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
- platform: macos
|
- platform: macos
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
- platform: web
|
- platform: web
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
- platform: windows
|
- platform: windows
|
||||||
create_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
base_revision: 54e66469a933b60ddf175f858f82eaeb97e48c8d
|
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
|
||||||
|
|
||||||
# User provided section
|
# User provided section
|
||||||
|
|
||||||
|
@ -1,65 +1,64 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id "com.android.application"
|
id "com.android.application"
|
||||||
// START: FlutterFire Configuration
|
|
||||||
id 'com.google.gms.google-services'
|
id 'com.google.gms.google-services'
|
||||||
// END: FlutterFire Configuration
|
|
||||||
id "kotlin-android"
|
id "kotlin-android"
|
||||||
id "dev.flutter.flutter-gradle-plugin"
|
id "dev.flutter.flutter-gradle-plugin"
|
||||||
}
|
}
|
||||||
|
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file("local.properties")
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
localPropertiesFile.withReader("UTF-8") { reader ->
|
||||||
localProperties.load(reader)
|
localProperties.load(reader)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = "1"
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
def flutterVersionName = localProperties.getProperty("flutter.versionName")
|
||||||
if (flutterVersionName == null) {
|
if (flutterVersionName == null) {
|
||||||
flutterVersionName = '1.0'
|
flutterVersionName = "1.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "dev.solsynth.solian"
|
namespace = "dev.solsynth.solian"
|
||||||
compileSdk flutter.compileSdkVersion
|
compileSdk = flutter.compileSdkVersion
|
||||||
ndkVersion flutter.ndkVersion
|
ndkVersion = flutter.ndkVersion
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
multiDexEnabled true
|
||||||
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
coreLibraryDesugaringEnabled true
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
}
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = '1.8'
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "dev.solsynth.solian"
|
applicationId = "dev.solsynth.solian"
|
||||||
minSdkVersion flutter.minSdkVersion
|
// You can update the following values to match your application needs.
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||||
versionCode flutterVersionCode.toInteger()
|
minSdk = flutter.minSdkVersion
|
||||||
versionName flutterVersionName
|
targetSdk = flutter.targetSdkVersion
|
||||||
|
versionCode = flutterVersionCode.toInteger()
|
||||||
|
versionName = flutterVersionName
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
signingConfig signingConfigs.debug
|
signingConfig = signingConfigs.debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flutter {
|
dependencies {
|
||||||
source '../..'
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {}
|
flutter {
|
||||||
|
source = "../.."
|
||||||
|
}
|
||||||
|
@ -13,21 +13,33 @@
|
|||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
||||||
|
|
||||||
<meta-data
|
|
||||||
android:name="firebase_messaging_auto_init_enabled"
|
|
||||||
android:value="false" />
|
|
||||||
<meta-data
|
|
||||||
android:name="firebase_analytics_collection_enabled"
|
|
||||||
android:value="false" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:label="Solian"
|
android:label="solian"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/launcher_icon">
|
android:icon="@mipmap/launcher_icon"
|
||||||
|
android:supportsRtl="true">
|
||||||
|
<receiver android:exported="false" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
|
||||||
|
<receiver android:exported="false" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
||||||
|
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
|
||||||
|
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
|
||||||
|
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
<meta-data
|
||||||
|
android:name="firebase_messaging_auto_init_enabled"
|
||||||
|
android:value="false" />
|
||||||
|
<meta-data
|
||||||
|
android:name="firebase_analytics_collection_enabled"
|
||||||
|
android:value="false" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
|
android:taskAffinity=""
|
||||||
android:theme="@style/LaunchTheme"
|
android:theme="@style/LaunchTheme"
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
@ -37,12 +49,12 @@
|
|||||||
while the Flutter UI initializes. After that, this theme continues
|
while the Flutter UI initializes. After that, this theme continues
|
||||||
to determine the Window background behind the Flutter UI. -->
|
to determine the Window background behind the Flutter UI. -->
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="io.flutter.embedding.android.NormalTheme"
|
android:name="io.flutter.embedding.android.NormalTheme"
|
||||||
android:resource="@style/NormalTheme"
|
android:resource="@style/NormalTheme"
|
||||||
/>
|
/>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<!-- Don't delete the meta-data below.
|
<!-- Don't delete the meta-data below.
|
||||||
@ -52,14 +64,14 @@
|
|||||||
android:value="2" />
|
android:value="2" />
|
||||||
</application>
|
</application>
|
||||||
<!-- Required to query activities that can process text, see:
|
<!-- Required to query activities that can process text, see:
|
||||||
https://developer.android.com/training/package-visibility?hl=en and
|
https://developer.android.com/training/package-visibility and
|
||||||
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
||||||
|
|
||||||
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
|
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
|
||||||
<queries>
|
<queries>
|
||||||
<intent>
|
<intent>
|
||||||
<action android:name="android.intent.action.PROCESS_TEXT" />
|
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
||||||
<data android:mimeType="text/plain" />
|
<data android:mimeType="text/plain"/>
|
||||||
</intent>
|
</intent>
|
||||||
</queries>
|
</queries>
|
||||||
</manifest>
|
</manifest>
|
@ -1,4 +1,4 @@
|
|||||||
package com.example.solian
|
package dev.solsynth.solian
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
|
@ -5,12 +5,12 @@ allprojects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.buildDir = '../build'
|
rootProject.buildDir = "../build"
|
||||||
subprojects {
|
subprojects {
|
||||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||||
}
|
}
|
||||||
subprojects {
|
subprojects {
|
||||||
project.evaluationDependsOn(':app')
|
project.evaluationDependsOn(":app")
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register("clean", Delete) {
|
tasks.register("clean", Delete) {
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
org.gradle.jvmargs=-Xmx4G
|
org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
android.defaults.buildfeatures.buildconfig=true
|
||||||
|
android.nonTransitiveRClass=false
|
||||||
|
android.nonFinalResIds=false
|
||||||
|
@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
|
||||||
|
@ -5,10 +5,9 @@ pluginManagement {
|
|||||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
return flutterSdkPath
|
return flutterSdkPath
|
||||||
}
|
}()
|
||||||
settings.ext.flutterSdkPath = flutterSdkPath()
|
|
||||||
|
|
||||||
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
|
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
@ -19,10 +18,8 @@ pluginManagement {
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
id "com.android.application" version "7.3.0" apply false
|
id "com.android.application" version '8.4.0' apply false
|
||||||
// START: FlutterFire Configuration
|
|
||||||
id "com.google.gms.google-services" version "4.3.15" apply false
|
id "com.google.gms.google-services" version "4.3.15" apply false
|
||||||
// END: FlutterFire Configuration
|
|
||||||
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
|
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,8 +2,6 @@ PODS:
|
|||||||
- connectivity_plus (0.0.1):
|
- connectivity_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- device_info (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- device_info_plus (0.0.1):
|
- device_info_plus (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- DKImagePickerController/Core (4.3.9):
|
- DKImagePickerController/Core (4.3.9):
|
||||||
@ -111,7 +109,7 @@ PODS:
|
|||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- image_picker_ios (0.0.1):
|
- image_picker_ios (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- livekit_client (2.1.5):
|
- livekit_client (2.1.6):
|
||||||
- Flutter
|
- Flutter
|
||||||
- WebRTC-SDK (= 114.5735.10)
|
- WebRTC-SDK (= 114.5735.10)
|
||||||
- nanopb (2.30910.0):
|
- nanopb (2.30910.0):
|
||||||
@ -126,8 +124,6 @@ PODS:
|
|||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- permission_handler_apple (9.3.0):
|
- permission_handler_apple (9.3.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- platform_device_id (0.0.1):
|
|
||||||
- Flutter
|
|
||||||
- PromisesObjC (2.4.0)
|
- PromisesObjC (2.4.0)
|
||||||
- SDWebImage (5.19.2):
|
- SDWebImage (5.19.2):
|
||||||
- SDWebImage/Core (= 5.19.2)
|
- SDWebImage/Core (= 5.19.2)
|
||||||
@ -152,7 +148,6 @@ PODS:
|
|||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
|
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
|
||||||
- device_info (from `.symlinks/plugins/device_info/ios`)
|
|
||||||
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
||||||
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
|
||||||
@ -166,7 +161,6 @@ DEPENDENCIES:
|
|||||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||||
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||||
- platform_device_id (from `.symlinks/plugins/platform_device_id/ios`)
|
|
||||||
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
|
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
|
||||||
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
|
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
|
||||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||||
@ -194,8 +188,6 @@ SPEC REPOS:
|
|||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
connectivity_plus:
|
connectivity_plus:
|
||||||
:path: ".symlinks/plugins/connectivity_plus/darwin"
|
:path: ".symlinks/plugins/connectivity_plus/darwin"
|
||||||
device_info:
|
|
||||||
:path: ".symlinks/plugins/device_info/ios"
|
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
:path: ".symlinks/plugins/device_info_plus/ios"
|
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||||
file_picker:
|
file_picker:
|
||||||
@ -222,8 +214,6 @@ EXTERNAL SOURCES:
|
|||||||
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
||||||
platform_device_id:
|
|
||||||
:path: ".symlinks/plugins/platform_device_id/ios"
|
|
||||||
sentry_flutter:
|
sentry_flutter:
|
||||||
:path: ".symlinks/plugins/sentry_flutter/ios"
|
:path: ".symlinks/plugins/sentry_flutter/ios"
|
||||||
sqflite:
|
sqflite:
|
||||||
@ -237,7 +227,6 @@ EXTERNAL SOURCES:
|
|||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
|
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
|
||||||
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
|
|
||||||
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
|
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
|
||||||
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
||||||
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
||||||
@ -256,12 +245,11 @@ SPEC CHECKSUMS:
|
|||||||
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
||||||
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
||||||
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
||||||
livekit_client: e6adadd527ee8e52fff579498467ee89921d99f6
|
livekit_client: 72da4281bddb8bda3d275f49b46e9a2046d57c58
|
||||||
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
||||||
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
||||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||||
platform_device_id: 81b3e2993881f87d0c82ef151dc274df4869aef5
|
|
||||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
|
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
|
||||||
Sentry: 51b056d96914a741f63eca774d118678b1eb05a1
|
Sentry: 51b056d96914a741f63eca774d118678b1eb05a1
|
||||||
|
@ -3,11 +3,15 @@ import Flutter
|
|||||||
|
|
||||||
@UIApplicationMain
|
@UIApplicationMain
|
||||||
@objc class AppDelegate: FlutterAppDelegate {
|
@objc class AppDelegate: FlutterAppDelegate {
|
||||||
override func application(
|
override func application(
|
||||||
_ application: UIApplication,
|
_ application: UIApplication,
|
||||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||||
) -> Bool {
|
) -> Bool {
|
||||||
GeneratedPluginRegistrant.register(with: self)
|
GeneratedPluginRegistrant.register(with: self)
|
||||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func applicationDidBecomeActive(_ application: UIApplication) {
|
||||||
|
application.applicationIconBadgeNumber = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,22 +9,12 @@ extension SolianExtenions on BuildContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> showErrorDialog(dynamic exception) {
|
Future<void> showErrorDialog(dynamic exception) {
|
||||||
String formatMessage(dynamic exception) {
|
|
||||||
final message = exception.toString();
|
|
||||||
if (message.trim().isEmpty) return '';
|
|
||||||
return message
|
|
||||||
.split(' ')
|
|
||||||
.map((element) =>
|
|
||||||
'${element[0].toUpperCase()}${element.substring(1).toLowerCase()}')
|
|
||||||
.join(' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
return showDialog<void>(
|
return showDialog<void>(
|
||||||
useRootNavigator: true,
|
useRootNavigator: true,
|
||||||
context: this,
|
context: this,
|
||||||
builder: (ctx) => AlertDialog(
|
builder: (ctx) => AlertDialog(
|
||||||
title: Text('errorHappened'.tr),
|
title: Text('errorHappened'.tr),
|
||||||
content: Text(formatMessage(exception)),
|
content: Text(exception.toString().capitalize!),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.pop(ctx),
|
onPressed: () => Navigator.pop(ctx),
|
||||||
|
@ -6,8 +6,6 @@ class Notification {
|
|||||||
String subject;
|
String subject;
|
||||||
String content;
|
String content;
|
||||||
List<Link>? links;
|
List<Link>? links;
|
||||||
bool isImportant;
|
|
||||||
bool isRealtime;
|
|
||||||
DateTime? readAt;
|
DateTime? readAt;
|
||||||
int? senderId;
|
int? senderId;
|
||||||
int recipientId;
|
int recipientId;
|
||||||
@ -20,8 +18,6 @@ class Notification {
|
|||||||
required this.subject,
|
required this.subject,
|
||||||
required this.content,
|
required this.content,
|
||||||
required this.links,
|
required this.links,
|
||||||
required this.isImportant,
|
|
||||||
required this.isRealtime,
|
|
||||||
required this.readAt,
|
required this.readAt,
|
||||||
required this.senderId,
|
required this.senderId,
|
||||||
required this.recipientId,
|
required this.recipientId,
|
||||||
@ -41,8 +37,6 @@ class Notification {
|
|||||||
links: json['links'] != null
|
links: json['links'] != null
|
||||||
? List<Link>.from(json['links'].map((x) => Link.fromJson(x)))
|
? List<Link>.from(json['links'].map((x) => Link.fromJson(x)))
|
||||||
: List.empty(),
|
: List.empty(),
|
||||||
isImportant: json['is_important'],
|
|
||||||
isRealtime: json['is_realtime'],
|
|
||||||
readAt: json['read_at'],
|
readAt: json['read_at'],
|
||||||
senderId: json['sender_id'],
|
senderId: json['sender_id'],
|
||||||
recipientId: json['recipient_id'],
|
recipientId: json['recipient_id'],
|
||||||
@ -58,8 +52,6 @@ class Notification {
|
|||||||
'links': links != null
|
'links': links != null
|
||||||
? List<dynamic>.from(links!.map((x) => x.toJson()))
|
? List<dynamic>.from(links!.map((x) => x.toJson()))
|
||||||
: List.empty(),
|
: List.empty(),
|
||||||
'is_important': isImportant,
|
|
||||||
'is_realtime': isRealtime,
|
|
||||||
'read_at': readAt,
|
'read_at': readAt,
|
||||||
'sender_id': senderId,
|
'sender_id': senderId,
|
||||||
'recipient_id': recipientId,
|
'recipient_id': recipientId,
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
import 'dart:developer';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
|
||||||
import 'package:platform_device_id/platform_device_id.dart';
|
|
||||||
import 'package:solian/models/notification.dart';
|
import 'package:solian/models/notification.dart';
|
||||||
import 'package:solian/models/packet.dart';
|
import 'package:solian/models/packet.dart';
|
||||||
import 'package:solian/models/pagination.dart';
|
import 'package:solian/models/pagination.dart';
|
||||||
@ -30,7 +31,14 @@ class AccountProvider extends GetxController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
onInit() {
|
onInit() {
|
||||||
Permission.notification.request().then((status) {
|
FirebaseMessaging.instance
|
||||||
|
.requestPermission(
|
||||||
|
alert: true,
|
||||||
|
announcement: true,
|
||||||
|
carPlay: true,
|
||||||
|
badge: true,
|
||||||
|
sound: true)
|
||||||
|
.then((status) {
|
||||||
notifyInitialization();
|
notifyInitialization();
|
||||||
notifyPrefetch();
|
notifyPrefetch();
|
||||||
});
|
});
|
||||||
@ -94,7 +102,7 @@ class AccountProvider extends GetxController {
|
|||||||
},
|
},
|
||||||
onDone: () {
|
onDone: () {
|
||||||
isConnected.value = false;
|
isConnected.value = false;
|
||||||
Future.delayed(const Duration(seconds: 3), () => connect());
|
Future.delayed(const Duration(seconds: 1), () => connect());
|
||||||
},
|
},
|
||||||
onError: (err) {
|
onError: (err) {
|
||||||
isConnected.value = false;
|
isConnected.value = false;
|
||||||
@ -175,7 +183,11 @@ class AccountProvider extends GetxController {
|
|||||||
|
|
||||||
late final String? token;
|
late final String? token;
|
||||||
late final String provider;
|
late final String provider;
|
||||||
final deviceUuid = await PlatformDeviceId.getDeviceId;
|
final deviceUuid = await _getDeviceUuid();
|
||||||
|
|
||||||
|
if (deviceUuid == null) {
|
||||||
|
log("Unable to active push notifications, couldn't get device uuid");
|
||||||
|
}
|
||||||
|
|
||||||
if (PlatformInfo.isIOS || PlatformInfo.isMacOS) {
|
if (PlatformInfo.isIOS || PlatformInfo.isMacOS) {
|
||||||
provider = "apple";
|
provider = "apple";
|
||||||
@ -196,4 +208,31 @@ class AccountProvider extends GetxController {
|
|||||||
throw Exception(resp.bodyString);
|
throw Exception(resp.bodyString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<String?> _getDeviceUuid() async {
|
||||||
|
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
|
||||||
|
if (PlatformInfo.isWeb) {
|
||||||
|
final WebBrowserInfo webInfo = await deviceInfo.webBrowserInfo;
|
||||||
|
return webInfo.vendor! +
|
||||||
|
webInfo.userAgent! +
|
||||||
|
webInfo.hardwareConcurrency.toString();
|
||||||
|
}
|
||||||
|
if (PlatformInfo.isAndroid) {
|
||||||
|
final AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
|
||||||
|
return androidInfo.id;
|
||||||
|
}
|
||||||
|
if (PlatformInfo.isIOS) {
|
||||||
|
final IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
|
||||||
|
return iosInfo.identifierForVendor!;
|
||||||
|
}
|
||||||
|
if (PlatformInfo.isLinux) {
|
||||||
|
final LinuxDeviceInfo linuxInfo = await deviceInfo.linuxInfo;
|
||||||
|
return linuxInfo.machineId!;
|
||||||
|
}
|
||||||
|
if (PlatformInfo.isWindows) {
|
||||||
|
final WindowsDeviceInfo windowsInfo = await deviceInfo.windowsInfo;
|
||||||
|
return windowsInfo.deviceId;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ class ChatProvider extends GetxController {
|
|||||||
},
|
},
|
||||||
onDone: () {
|
onDone: () {
|
||||||
isConnected.value = false;
|
isConnected.value = false;
|
||||||
Future.delayed(const Duration(seconds: 3), () => connect());
|
Future.delayed(const Duration(seconds: 1), () => connect());
|
||||||
},
|
},
|
||||||
onError: (err) {
|
onError: (err) {
|
||||||
isConnected.value = false;
|
isConnected.value = false;
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_background/flutter_background.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:livekit_client/livekit_client.dart';
|
import 'package:livekit_client/livekit_client.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
@ -44,9 +43,6 @@ class ChatCallProvider extends GetxController {
|
|||||||
if (lkPlatformIs(PlatformType.macOS) || lkPlatformIs(PlatformType.linux)) {
|
if (lkPlatformIs(PlatformType.macOS) || lkPlatformIs(PlatformType.linux)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (lkPlatformIs(PlatformType.android)) {
|
|
||||||
FlutterBackground.enableBackgroundExecution();
|
|
||||||
}
|
|
||||||
|
|
||||||
await Permission.camera.request();
|
await Permission.camera.request();
|
||||||
await Permission.microphone.request();
|
await Permission.microphone.request();
|
||||||
|
@ -78,9 +78,9 @@ class _AccountScreenState extends State<AccountScreen> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Column(
|
return ListView(
|
||||||
children: [
|
children: [
|
||||||
const AccountHeading().paddingOnly(bottom: 8),
|
const AccountHeading().paddingOnly(bottom: 8, top: 16),
|
||||||
...(actionItems.map(
|
...(actionItems.map(
|
||||||
(x) => ListTile(
|
(x) => ListTile(
|
||||||
contentPadding: const EdgeInsets.symmetric(horizontal: 34),
|
contentPadding: const EdgeInsets.symmetric(horizontal: 34),
|
||||||
|
@ -27,7 +27,7 @@ class _NotificationScreenState extends State<NotificationScreen> {
|
|||||||
|
|
||||||
List<int> markList = List.empty(growable: true);
|
List<int> markList = List.empty(growable: true);
|
||||||
for (final element in provider.notifications) {
|
for (final element in provider.notifications) {
|
||||||
if (element.isRealtime) continue;
|
if (element.id <= 0) continue;
|
||||||
markList.add(element.id);
|
markList.add(element.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ class _NotificationScreenState extends State<NotificationScreen> {
|
|||||||
|
|
||||||
final AccountProvider provider = Get.find();
|
final AccountProvider provider = Get.find();
|
||||||
|
|
||||||
if (element.isRealtime) {
|
if (element.id <= 0) {
|
||||||
provider.notifications.removeAt(index);
|
provider.notifications.removeAt(index);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:math' as math;
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@ -337,37 +337,45 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: PagedListView<int, Message>(
|
child: PagedListView<int, Message>(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
reverse: true,
|
reverse: true,
|
||||||
pagingController: _pagingController,
|
pagingController: _pagingController,
|
||||||
builderDelegate: PagedChildBuilderDelegate<Message>(
|
builderDelegate: PagedChildBuilderDelegate<Message>(
|
||||||
itemBuilder: buildHistory,
|
itemBuilder: buildHistory,
|
||||||
noItemsFoundIndicatorBuilder: (_) => Container(),
|
noItemsFoundIndicatorBuilder: (_) => Container(),
|
||||||
),
|
),
|
||||||
).paddingOnly(bottom: 64),
|
).paddingOnly(bottom: 56),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: math.max(MediaQuery.of(context).padding.bottom, 16),
|
bottom: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
child: ChatMessageInput(
|
child: ClipRect(
|
||||||
edit: _messageToEditing,
|
child: BackdropFilter(
|
||||||
reply: _messageToReplying,
|
filter: ImageFilter.blur(sigmaX: 50, sigmaY: 50),
|
||||||
realm: widget.realm,
|
child: SafeArea(
|
||||||
placeholder: placeholder,
|
child: ChatMessageInput(
|
||||||
channel: _channel!,
|
edit: _messageToEditing,
|
||||||
onSent: (Message item) {
|
reply: _messageToReplying,
|
||||||
setState(() {
|
realm: widget.realm,
|
||||||
_pagingController.itemList?.insert(0, item);
|
placeholder: placeholder,
|
||||||
});
|
channel: _channel!,
|
||||||
},
|
onSent: (Message item) {
|
||||||
onReset: () {
|
setState(() {
|
||||||
setState(() {
|
_pagingController.itemList?.insert(0, item);
|
||||||
_messageToReplying = null;
|
});
|
||||||
_messageToEditing = null;
|
},
|
||||||
});
|
onReset: () {
|
||||||
},
|
setState(() {
|
||||||
|
_messageToReplying = null;
|
||||||
|
_messageToEditing = null;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (_ongoingCall != null)
|
if (_ongoingCall != null)
|
||||||
|
@ -72,7 +72,7 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
|
|||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.edit),
|
leading: const Icon(Icons.edit),
|
||||||
trailing: const Icon(Icons.chevron_right),
|
trailing: const Icon(Icons.chevron_right),
|
||||||
title: Text('channelAdjust'.tr),
|
title: Text('channelAdjust'.tr.capitalize!),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
AppRouter.instance
|
AppRouter.instance
|
||||||
.pushNamed(
|
.pushNamed(
|
||||||
@ -129,12 +129,12 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
|
|||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.settings),
|
leading: const Icon(Icons.settings),
|
||||||
trailing: const Icon(Icons.chevron_right),
|
trailing: const Icon(Icons.chevron_right),
|
||||||
title: Text('channelSettings'.tr),
|
title: Text('channelSettings'.tr.capitalize!),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.supervisor_account),
|
leading: const Icon(Icons.supervisor_account),
|
||||||
trailing: const Icon(Icons.chevron_right),
|
trailing: const Icon(Icons.chevron_right),
|
||||||
title: Text('channelMembers'.tr),
|
title: Text('channelMembers'.tr.capitalize!),
|
||||||
onTap: () => showMemberList(),
|
onTap: () => showMemberList(),
|
||||||
),
|
),
|
||||||
...(_isOwned ? ownerActions : List.empty()),
|
...(_isOwned ? ownerActions : List.empty()),
|
||||||
|
@ -69,7 +69,7 @@ class _RealmDetailScreenState extends State<RealmDetailScreen> {
|
|||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.edit),
|
leading: const Icon(Icons.edit),
|
||||||
trailing: const Icon(Icons.chevron_right),
|
trailing: const Icon(Icons.chevron_right),
|
||||||
title: Text('realmAdjust'.tr),
|
title: Text('realmAdjust'.tr.capitalize!),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
AppRouter.instance
|
AppRouter.instance
|
||||||
.pushNamed(
|
.pushNamed(
|
||||||
@ -122,12 +122,12 @@ class _RealmDetailScreenState extends State<RealmDetailScreen> {
|
|||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.settings),
|
leading: const Icon(Icons.settings),
|
||||||
trailing: const Icon(Icons.chevron_right),
|
trailing: const Icon(Icons.chevron_right),
|
||||||
title: Text('realmSettings'.tr),
|
title: Text('realmSettings'.tr.capitalize!),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.supervisor_account),
|
leading: const Icon(Icons.supervisor_account),
|
||||||
trailing: const Icon(Icons.chevron_right),
|
trailing: const Icon(Icons.chevron_right),
|
||||||
title: Text('realmMembers'.tr),
|
title: Text('realmMembers'.tr.capitalize!),
|
||||||
onTap: () => showMemberList(),
|
onTap: () => showMemberList(),
|
||||||
),
|
),
|
||||||
...(_isOwned ? ownerActions : List.empty()),
|
...(_isOwned ? ownerActions : List.empty()),
|
||||||
|
@ -14,7 +14,10 @@ abstract class ServiceFinder {
|
|||||||
|
|
||||||
static GetConnect configureClient(String service,
|
static GetConnect configureClient(String service,
|
||||||
{timeout = const Duration(seconds: 5)}) {
|
{timeout = const Duration(seconds: 5)}) {
|
||||||
final client = GetConnect(timeout: timeout, allowAutoSignedCert: true);
|
final client = GetConnect(
|
||||||
|
timeout: timeout,
|
||||||
|
allowAutoSignedCert: true,
|
||||||
|
);
|
||||||
client.httpClient.baseUrl = ServiceFinder.services[service];
|
client.httpClient.baseUrl = ServiceFinder.services[service];
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
|
@ -116,7 +116,7 @@ class SolianMessages extends Translations {
|
|||||||
'realmMembers': 'Realm members',
|
'realmMembers': 'Realm members',
|
||||||
'realmMembersAdd': 'Add realm members',
|
'realmMembersAdd': 'Add realm members',
|
||||||
'realmMembersAddHint': 'Into @realm',
|
'realmMembersAddHint': 'Into @realm',
|
||||||
'realmAdjust': 'Realm Adjustment',
|
'realmAdjust': 'Realm adjustment',
|
||||||
'realmSettings': 'Realm settings',
|
'realmSettings': 'Realm settings',
|
||||||
'realmEditingNotify': 'You\'re editing realm @realm',
|
'realmEditingNotify': 'You\'re editing realm @realm',
|
||||||
'realmDeletionConfirm': 'Confirm realm deletion',
|
'realmDeletionConfirm': 'Confirm realm deletion',
|
||||||
@ -142,9 +142,9 @@ class SolianMessages extends Translations {
|
|||||||
'channelType': 'Channel type',
|
'channelType': 'Channel type',
|
||||||
'channelTypeCommon': 'Regular',
|
'channelTypeCommon': 'Regular',
|
||||||
'channelTypeDirect': 'DM',
|
'channelTypeDirect': 'DM',
|
||||||
'channelAdjust': 'Channel Adjustment',
|
'channelAdjust': 'Channel adjustment',
|
||||||
'channelDetail': 'Channel Detail',
|
'channelDetail': 'Channel detail',
|
||||||
'channelSettings': 'Channel Settings',
|
'channelSettings': 'Channel settings',
|
||||||
'channelDeletionConfirm': 'Confirm channel deletion',
|
'channelDeletionConfirm': 'Confirm channel deletion',
|
||||||
'channelDeletionConfirmCaption':
|
'channelDeletionConfirmCaption':
|
||||||
'Are you sure to delete channel @channel? This action cannot be undone!',
|
'Are you sure to delete channel @channel? This action cannot be undone!',
|
||||||
|
@ -2,7 +2,6 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_background/flutter_background.dart';
|
|
||||||
import 'package:flutter_webrtc/flutter_webrtc.dart';
|
import 'package:flutter_webrtc/flutter_webrtc.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:livekit_client/livekit_client.dart';
|
import 'package:livekit_client/livekit_client.dart';
|
||||||
@ -171,35 +170,6 @@ class _ControlsWidgetState extends State<ControlsWidget> {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (lkPlatformIs(PlatformType.android)) {
|
|
||||||
requestBackgroundPermission([bool isRetry = false]) async {
|
|
||||||
try {
|
|
||||||
bool hasPermissions = await FlutterBackground.hasPermissions;
|
|
||||||
if (!isRetry) {
|
|
||||||
const androidConfig = FlutterBackgroundAndroidConfig(
|
|
||||||
notificationTitle: 'Screen Sharing',
|
|
||||||
notificationText: 'Solar Messager is sharing your screen',
|
|
||||||
notificationImportance: AndroidNotificationImportance.Default,
|
|
||||||
notificationIcon:
|
|
||||||
AndroidResource(name: 'launcher_icon', defType: 'mipmap'),
|
|
||||||
);
|
|
||||||
hasPermissions = await FlutterBackground.initialize(
|
|
||||||
androidConfig: androidConfig);
|
|
||||||
}
|
|
||||||
if (hasPermissions &&
|
|
||||||
!FlutterBackground.isBackgroundExecutionEnabled) {
|
|
||||||
await FlutterBackground.enableBackgroundExecution();
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
if (!isRetry) {
|
|
||||||
return await Future<void>.delayed(const Duration(seconds: 1),
|
|
||||||
() => requestBackgroundPermission(true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await requestBackgroundPermission();
|
|
||||||
}
|
|
||||||
if (lkPlatformIs(PlatformType.iOS)) {
|
if (lkPlatformIs(PlatformType.iOS)) {
|
||||||
var track = await LocalVideoTrack.createScreenShareTrack(
|
var track = await LocalVideoTrack.createScreenShareTrack(
|
||||||
const ScreenShareCaptureOptions(
|
const ScreenShareCaptureOptions(
|
||||||
@ -223,12 +193,6 @@ class _ControlsWidgetState extends State<ControlsWidget> {
|
|||||||
|
|
||||||
void disableScreenShare() async {
|
void disableScreenShare() async {
|
||||||
await participant.setScreenShareEnabled(false);
|
await participant.setScreenShareEnabled(false);
|
||||||
if (lkPlatformIs(PlatformType.android)) {
|
|
||||||
// Android specific
|
|
||||||
try {
|
|
||||||
await FlutterBackground.disableBackgroundExecution();
|
|
||||||
} catch (_) {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -56,7 +56,7 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
|
|||||||
|
|
||||||
Map<String, dynamic> encodeMessage(String content) {
|
Map<String, dynamic> encodeMessage(String content) {
|
||||||
return {
|
return {
|
||||||
'value': content,
|
'value': content.trim(),
|
||||||
'keypair_id': null,
|
'keypair_id': null,
|
||||||
'algorithm': 'plain',
|
'algorithm': 'plain',
|
||||||
};
|
};
|
||||||
@ -103,9 +103,11 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
|
|||||||
senderId: sender.id,
|
senderId: sender.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
message.isSending = true;
|
if (_editTo == null) {
|
||||||
|
message.isSending = true;
|
||||||
|
widget.onSent(message);
|
||||||
|
}
|
||||||
|
|
||||||
if (widget.edit == null) widget.onSent(message);
|
|
||||||
resetInput();
|
resetInput();
|
||||||
|
|
||||||
Response resp;
|
Response resp;
|
||||||
@ -131,6 +133,7 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
|
|||||||
_editTo = null;
|
_editTo = null;
|
||||||
_replyTo = null;
|
_replyTo = null;
|
||||||
_textController.clear();
|
_textController.clear();
|
||||||
|
_attachments.clear();
|
||||||
setState(() {});
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,70 +164,66 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
|
|||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
return Material(
|
return Column(
|
||||||
color: Theme.of(context).colorScheme.surface,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
child: Column(
|
children: [
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
if (_replyTo != null)
|
||||||
children: [
|
MaterialBanner(
|
||||||
const Divider(thickness: 0.3, height: 1),
|
leading: const FaIcon(FontAwesomeIcons.reply, size: 18),
|
||||||
if (_replyTo != null)
|
dividerColor: Colors.transparent,
|
||||||
MaterialBanner(
|
content: ChatMessage(
|
||||||
leading: const FaIcon(FontAwesomeIcons.reply, size: 18),
|
item: _replyTo!,
|
||||||
dividerColor: Colors.transparent,
|
isContentPreviewing: true,
|
||||||
content: ChatMessage(
|
|
||||||
item: _replyTo!,
|
|
||||||
isContentPreviewing: true,
|
|
||||||
),
|
|
||||||
actions: notifyBannerActions,
|
|
||||||
),
|
),
|
||||||
if (_editTo != null)
|
actions: notifyBannerActions,
|
||||||
MaterialBanner(
|
|
||||||
leading: const Icon(Icons.edit),
|
|
||||||
dividerColor: Colors.transparent,
|
|
||||||
content: ChatMessage(
|
|
||||||
item: _editTo!,
|
|
||||||
isContentPreviewing: true,
|
|
||||||
),
|
|
||||||
actions: notifyBannerActions,
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
height: 56,
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: TextField(
|
|
||||||
controller: _textController,
|
|
||||||
focusNode: _focusNode,
|
|
||||||
maxLines: null,
|
|
||||||
autocorrect: true,
|
|
||||||
keyboardType: TextInputType.text,
|
|
||||||
decoration: InputDecoration.collapsed(
|
|
||||||
hintText: widget.placeholder ??
|
|
||||||
'messageInputPlaceholder'.trParams(
|
|
||||||
{'channel': '#${widget.channel.alias}'},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
onSubmitted: (_) => sendMessage(),
|
|
||||||
onTapOutside: (_) =>
|
|
||||||
FocusManager.instance.primaryFocus?.unfocus(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
IconButton(
|
|
||||||
icon: const Icon(Icons.attach_file),
|
|
||||||
color: Colors.teal,
|
|
||||||
onPressed: () => showAttachments(),
|
|
||||||
),
|
|
||||||
IconButton(
|
|
||||||
icon: const Icon(Icons.send),
|
|
||||||
color: Theme.of(context).colorScheme.primary,
|
|
||||||
onPressed: () => sendMessage(),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
).paddingOnly(left: 20, right: 16),
|
|
||||||
),
|
),
|
||||||
],
|
if (_editTo != null)
|
||||||
),
|
MaterialBanner(
|
||||||
|
leading: const Icon(Icons.edit),
|
||||||
|
dividerColor: Colors.transparent,
|
||||||
|
content: ChatMessage(
|
||||||
|
item: _editTo!,
|
||||||
|
isContentPreviewing: true,
|
||||||
|
),
|
||||||
|
actions: notifyBannerActions,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 56,
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: TextField(
|
||||||
|
controller: _textController,
|
||||||
|
focusNode: _focusNode,
|
||||||
|
maxLines: null,
|
||||||
|
autocorrect: true,
|
||||||
|
keyboardType: TextInputType.text,
|
||||||
|
decoration: InputDecoration.collapsed(
|
||||||
|
hintText: widget.placeholder ??
|
||||||
|
'messageInputPlaceholder'.trParams(
|
||||||
|
{'channel': '#${widget.channel.alias}'},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onSubmitted: (_) => sendMessage(),
|
||||||
|
onTapOutside: (_) =>
|
||||||
|
FocusManager.instance.primaryFocus?.unfocus(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.attach_file),
|
||||||
|
color: Colors.teal,
|
||||||
|
onPressed: () => showAttachments(),
|
||||||
|
),
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.send),
|
||||||
|
color: Theme.of(context).colorScheme.primary,
|
||||||
|
onPressed: () => sendMessage(),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
).paddingOnly(left: 20, right: 16),
|
||||||
|
),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_animate/flutter_animate.dart';
|
import 'package:flutter_animate/flutter_animate.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:solian/providers/account.dart';
|
import 'package:solian/providers/account.dart';
|
||||||
|
import 'package:solian/providers/auth.dart';
|
||||||
import 'package:solian/providers/chat.dart';
|
import 'package:solian/providers/chat.dart';
|
||||||
|
|
||||||
class BackgroundStateWidget extends StatelessWidget {
|
class BackgroundStateWidget extends StatelessWidget {
|
||||||
@ -9,6 +10,7 @@ class BackgroundStateWidget extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
final AuthProvider auth = Get.find();
|
||||||
final AccountProvider account = Get.find();
|
final AccountProvider account = Get.find();
|
||||||
final ChatProvider chat = Get.find();
|
final ChatProvider chat = Get.find();
|
||||||
|
|
||||||
@ -20,35 +22,51 @@ class BackgroundStateWidget extends StatelessWidget {
|
|||||||
|
|
||||||
return Row(children: [
|
return Row(children: [
|
||||||
if (disconnected && !connecting)
|
if (disconnected && !connecting)
|
||||||
IconButton(
|
FutureBuilder(
|
||||||
tooltip: [
|
future: auth.isAuthorized,
|
||||||
if (account.isConnected.isFalse)
|
builder: (context, snapshot) {
|
||||||
'Lost Connection with Passport Server...',
|
if (!snapshot.hasData || snapshot.data == false) {
|
||||||
if (chat.isConnected.isFalse)
|
return const SizedBox();
|
||||||
'Lost Connection with Messaging Server...',
|
}
|
||||||
].join('\n'),
|
return IconButton(
|
||||||
icon: const Icon(Icons.wifi_off)
|
tooltip: [
|
||||||
.animate(onPlay: (c) => c.repeat())
|
if (account.isConnected.isFalse)
|
||||||
.fadeIn(duration: 800.ms)
|
'Lost Connection with Passport Server...',
|
||||||
.then()
|
if (chat.isConnected.isFalse)
|
||||||
.fadeOut(duration: 800.ms),
|
'Lost Connection with Messaging Server...',
|
||||||
onPressed: () {
|
].join('\n'),
|
||||||
if (account.isConnected.isFalse) account.connect();
|
icon: const Icon(Icons.wifi_off)
|
||||||
if (chat.isConnected.isFalse) chat.connect();
|
.animate(onPlay: (c) => c.repeat())
|
||||||
|
.fadeIn(duration: 800.ms)
|
||||||
|
.then()
|
||||||
|
.fadeOut(duration: 800.ms),
|
||||||
|
onPressed: () {
|
||||||
|
if (account.isConnected.isFalse) account.connect();
|
||||||
|
if (chat.isConnected.isFalse) chat.connect();
|
||||||
|
},
|
||||||
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if (connecting)
|
if (connecting)
|
||||||
IconButton(
|
FutureBuilder(
|
||||||
tooltip: [
|
future: auth.isAuthorized,
|
||||||
if (account.isConnecting.isTrue)
|
builder: (context, snapshot) {
|
||||||
'Waiting Passport Server Response...',
|
if (!snapshot.hasData || snapshot.data == false) {
|
||||||
if (chat.isConnecting.isTrue)
|
return const SizedBox();
|
||||||
'Waiting Messaging Server Response...',
|
}
|
||||||
].join('\n'),
|
return IconButton(
|
||||||
icon: const Icon(Icons.sync)
|
tooltip: [
|
||||||
.animate(onPlay: (c) => c.repeat())
|
if (account.isConnecting.isTrue)
|
||||||
.rotate(duration: 1850.ms, begin: 1, end: 0),
|
'Waiting Passport Server Response...',
|
||||||
onPressed: () {},
|
if (chat.isConnecting.isTrue)
|
||||||
|
'Waiting Messaging Server Response...',
|
||||||
|
].join('\n'),
|
||||||
|
icon: const Icon(Icons.sync)
|
||||||
|
.animate(onPlay: (c) => c.repeat())
|
||||||
|
.rotate(duration: 1850.ms, begin: 1, end: 0),
|
||||||
|
onPressed: () {},
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#include <file_selector_linux/file_selector_plugin.h>
|
#include <file_selector_linux/file_selector_plugin.h>
|
||||||
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
|
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
|
||||||
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
|
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
|
||||||
#include <platform_device_id_linux/platform_device_id_linux_plugin.h>
|
|
||||||
#include <sentry_flutter/sentry_flutter_plugin.h>
|
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||||
#include <url_launcher_linux/url_launcher_plugin.h>
|
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||||
|
|
||||||
@ -23,9 +22,6 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
|||||||
g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar =
|
g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin");
|
||||||
flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar);
|
flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar);
|
||||||
g_autoptr(FlPluginRegistrar) platform_device_id_linux_registrar =
|
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "PlatformDeviceIdLinuxPlugin");
|
|
||||||
platform_device_id_linux_plugin_register_with_registrar(platform_device_id_linux_registrar);
|
|
||||||
g_autoptr(FlPluginRegistrar) sentry_flutter_registrar =
|
g_autoptr(FlPluginRegistrar) sentry_flutter_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "SentryFlutterPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "SentryFlutterPlugin");
|
||||||
sentry_flutter_plugin_register_with_registrar(sentry_flutter_registrar);
|
sentry_flutter_plugin_register_with_registrar(sentry_flutter_registrar);
|
||||||
|
@ -6,7 +6,6 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||||||
file_selector_linux
|
file_selector_linux
|
||||||
flutter_secure_storage_linux
|
flutter_secure_storage_linux
|
||||||
flutter_webrtc
|
flutter_webrtc
|
||||||
platform_device_id_linux
|
|
||||||
sentry_flutter
|
sentry_flutter
|
||||||
url_launcher_linux
|
url_launcher_linux
|
||||||
)
|
)
|
||||||
|
@ -16,9 +16,8 @@ import flutter_webrtc
|
|||||||
import livekit_client
|
import livekit_client
|
||||||
import package_info_plus
|
import package_info_plus
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
import platform_device_id
|
|
||||||
import platform_device_id_macos
|
|
||||||
import sentry_flutter
|
import sentry_flutter
|
||||||
|
import shared_preferences_foundation
|
||||||
import sqflite
|
import sqflite
|
||||||
import url_launcher_macos
|
import url_launcher_macos
|
||||||
import video_player_avfoundation
|
import video_player_avfoundation
|
||||||
@ -36,9 +35,8 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
|||||||
LiveKitPlugin.register(with: registry.registrar(forPlugin: "LiveKitPlugin"))
|
LiveKitPlugin.register(with: registry.registrar(forPlugin: "LiveKitPlugin"))
|
||||||
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
PlatformDeviceIdMacosPlugin.register(with: registry.registrar(forPlugin: "PlatformDeviceIdMacosPlugin"))
|
|
||||||
PlatformDeviceIdMacosPlugin.register(with: registry.registrar(forPlugin: "PlatformDeviceIdMacosPlugin"))
|
|
||||||
SentryFlutterPlugin.register(with: registry.registrar(forPlugin: "SentryFlutterPlugin"))
|
SentryFlutterPlugin.register(with: registry.registrar(forPlugin: "SentryFlutterPlugin"))
|
||||||
|
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||||
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||||
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||||
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
|
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
|
||||||
|
@ -6,6 +6,39 @@ PODS:
|
|||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- file_selector_macos (0.0.1):
|
- file_selector_macos (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
|
- Firebase/CoreOnly (10.27.0):
|
||||||
|
- FirebaseCore (= 10.27.0)
|
||||||
|
- Firebase/Messaging (10.27.0):
|
||||||
|
- Firebase/CoreOnly
|
||||||
|
- FirebaseMessaging (~> 10.27.0)
|
||||||
|
- firebase_core (3.0.0):
|
||||||
|
- Firebase/CoreOnly (~> 10.27.0)
|
||||||
|
- FlutterMacOS
|
||||||
|
- firebase_messaging (15.0.0):
|
||||||
|
- Firebase/CoreOnly (~> 10.27.0)
|
||||||
|
- Firebase/Messaging (~> 10.27.0)
|
||||||
|
- firebase_core
|
||||||
|
- FlutterMacOS
|
||||||
|
- FirebaseCore (10.27.0):
|
||||||
|
- FirebaseCoreInternal (~> 10.0)
|
||||||
|
- GoogleUtilities/Environment (~> 7.12)
|
||||||
|
- GoogleUtilities/Logger (~> 7.12)
|
||||||
|
- FirebaseCoreInternal (10.27.0):
|
||||||
|
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
||||||
|
- FirebaseInstallations (10.27.0):
|
||||||
|
- FirebaseCore (~> 10.0)
|
||||||
|
- GoogleUtilities/Environment (~> 7.8)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||||
|
- PromisesObjC (~> 2.1)
|
||||||
|
- FirebaseMessaging (10.27.0):
|
||||||
|
- FirebaseCore (~> 10.0)
|
||||||
|
- FirebaseInstallations (~> 10.0)
|
||||||
|
- GoogleDataTransport (~> 9.3)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (~> 7.8)
|
||||||
|
- GoogleUtilities/Environment (~> 7.8)
|
||||||
|
- GoogleUtilities/Reachability (~> 7.8)
|
||||||
|
- GoogleUtilities/UserDefaults (~> 7.8)
|
||||||
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
- flutter_local_notifications (0.0.1):
|
- flutter_local_notifications (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- flutter_secure_storage_macos (6.1.1):
|
- flutter_secure_storage_macos (6.1.1):
|
||||||
@ -14,14 +47,49 @@ PODS:
|
|||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- WebRTC-SDK (= 114.5735.10)
|
- WebRTC-SDK (= 114.5735.10)
|
||||||
- FlutterMacOS (1.0.0)
|
- FlutterMacOS (1.0.0)
|
||||||
- livekit_client (2.1.5):
|
- GoogleDataTransport (9.4.1):
|
||||||
|
- GoogleUtilities/Environment (~> 7.7)
|
||||||
|
- nanopb (< 2.30911.0, >= 2.30908.0)
|
||||||
|
- PromisesObjC (< 3.0, >= 1.2)
|
||||||
|
- GoogleUtilities/AppDelegateSwizzler (7.13.3):
|
||||||
|
- GoogleUtilities/Environment
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/Network
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Environment (7.13.3):
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- PromisesObjC (< 3.0, >= 1.2)
|
||||||
|
- GoogleUtilities/Logger (7.13.3):
|
||||||
|
- GoogleUtilities/Environment
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Network (7.13.3):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- "GoogleUtilities/NSData+zlib"
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Reachability
|
||||||
|
- "GoogleUtilities/NSData+zlib (7.13.3)":
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/Privacy (7.13.3)
|
||||||
|
- GoogleUtilities/Reachability (7.13.3):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- GoogleUtilities/UserDefaults (7.13.3):
|
||||||
|
- GoogleUtilities/Logger
|
||||||
|
- GoogleUtilities/Privacy
|
||||||
|
- livekit_client (2.1.6):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- WebRTC-SDK (= 114.5735.10)
|
- WebRTC-SDK (= 114.5735.10)
|
||||||
|
- nanopb (2.30910.0):
|
||||||
|
- nanopb/decode (= 2.30910.0)
|
||||||
|
- nanopb/encode (= 2.30910.0)
|
||||||
|
- nanopb/decode (2.30910.0)
|
||||||
|
- nanopb/encode (2.30910.0)
|
||||||
- package_info_plus (0.0.1):
|
- package_info_plus (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- path_provider_foundation (0.0.1):
|
- path_provider_foundation (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
|
- PromisesObjC (2.4.0)
|
||||||
- Sentry/HybridSDK (8.25.2)
|
- Sentry/HybridSDK (8.25.2)
|
||||||
- sentry_flutter (8.2.0):
|
- sentry_flutter (8.2.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
@ -43,6 +111,8 @@ DEPENDENCIES:
|
|||||||
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin`)
|
- connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin`)
|
||||||
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
|
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
|
||||||
- file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`)
|
- file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`)
|
||||||
|
- firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`)
|
||||||
|
- firebase_messaging (from `Flutter/ephemeral/.symlinks/plugins/firebase_messaging/macos`)
|
||||||
- flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/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_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`)
|
||||||
- flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`)
|
- flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`)
|
||||||
@ -58,6 +128,15 @@ DEPENDENCIES:
|
|||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
|
- Firebase
|
||||||
|
- FirebaseCore
|
||||||
|
- FirebaseCoreInternal
|
||||||
|
- FirebaseInstallations
|
||||||
|
- FirebaseMessaging
|
||||||
|
- GoogleDataTransport
|
||||||
|
- GoogleUtilities
|
||||||
|
- nanopb
|
||||||
|
- PromisesObjC
|
||||||
- Sentry
|
- Sentry
|
||||||
- WebRTC-SDK
|
- WebRTC-SDK
|
||||||
|
|
||||||
@ -68,6 +147,10 @@ EXTERNAL SOURCES:
|
|||||||
:path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
|
||||||
file_selector_macos:
|
file_selector_macos:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos
|
||||||
|
firebase_core:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos
|
||||||
|
firebase_messaging:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/firebase_messaging/macos
|
||||||
flutter_local_notifications:
|
flutter_local_notifications:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos
|
||||||
flutter_secure_storage_macos:
|
flutter_secure_storage_macos:
|
||||||
@ -97,13 +180,24 @@ SPEC CHECKSUMS:
|
|||||||
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
|
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
|
||||||
device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720
|
device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720
|
||||||
file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2
|
file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2
|
||||||
|
Firebase: 26b040b20866a55f55eb3611b9fcf3ae64816b86
|
||||||
|
firebase_core: 0b3b9c6c93f774c7392f1f9a6712f0d9ce9b1771
|
||||||
|
firebase_messaging: cea8e96b86f4fa6344d7b858d8fc8816e55f1b64
|
||||||
|
FirebaseCore: a2b95ae4ce7c83ceecfbbbe3b6f1cddc7415a808
|
||||||
|
FirebaseCoreInternal: 4b297a2d56063dbea2c1d0d04222d44a8d058862
|
||||||
|
FirebaseInstallations: 766dabca09fd94aef922538aaf144cc4a6fb6869
|
||||||
|
FirebaseMessaging: 585984d0a1df120617eb10b44cad8968b859815e
|
||||||
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
|
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
|
||||||
flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9
|
flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9
|
||||||
flutter_webrtc: 823284e171ecb2487b7210c214886a949c122a59
|
flutter_webrtc: 823284e171ecb2487b7210c214886a949c122a59
|
||||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||||
livekit_client: ca5f0447742014b6e462c27b71d49dcf03ec0446
|
GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
|
||||||
|
GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
|
||||||
|
livekit_client: a87c5b7bac4ecd63da1183682ec10f5cafadbaf7
|
||||||
|
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
||||||
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
|
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
|
||||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||||
|
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||||
Sentry: 51b056d96914a741f63eca774d118678b1eb05a1
|
Sentry: 51b056d96914a741f63eca774d118678b1eb05a1
|
||||||
sentry_flutter: e8397d13e297a5d4b6be8a752e33140b21c5cc97
|
sentry_flutter: e8397d13e297a5d4b6be8a752e33140b21c5cc97
|
||||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||||
|
@ -243,6 +243,7 @@
|
|||||||
33CC110E2044A8840003C045 /* Bundle Framework */,
|
33CC110E2044A8840003C045 /* Bundle Framework */,
|
||||||
3399D490228B24CF009A79C7 /* ShellScript */,
|
3399D490228B24CF009A79C7 /* ShellScript */,
|
||||||
C5DDC734703B72E778163C68 /* [CP] Embed Pods Frameworks */,
|
C5DDC734703B72E778163C68 /* [CP] Embed Pods Frameworks */,
|
||||||
|
7009C53F1F4A3CB93BB64EF3 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -386,6 +387,23 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
|
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
|
||||||
};
|
};
|
||||||
|
7009C53F1F4A3CB93BB64EF3 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputFileListPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
C1C3653094F6B3FFFFCFD12B /* [CP] Check Pods Manifest.lock */ = {
|
C1C3653094F6B3FFFFCFD12B /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
154
pubspec.lock
154
pubspec.lock
@ -153,14 +153,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.3"
|
version: "3.0.3"
|
||||||
cryptography:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cryptography
|
|
||||||
sha256: d146b76d33d94548cf035233fbc2f4338c1242fa119013bead807d033fc4ae05
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
csslib:
|
csslib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -181,10 +173,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dart_webrtc
|
name: dart_webrtc
|
||||||
sha256: fe4db21dc389b99e04cb7bf43bc927dba2e42768d4c28211b66a4b5a16e4d516
|
sha256: d663abfe6ed95afadcb64083e364aa16dbeaadead193bb03047cf6913e57b65e
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.5"
|
version: "1.4.6+hotfix.1"
|
||||||
dbus:
|
dbus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -193,24 +185,8 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.10"
|
version: "0.7.10"
|
||||||
device_info:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: device_info
|
|
||||||
sha256: f4a8156cb7b7480d969cb734907d18b333c8f0bc0b1ad0b342cdcecf30d62c48
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.3"
|
|
||||||
device_info_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: device_info_platform_interface
|
|
||||||
sha256: b148e0bf9640145d09a4f8dea96614076f889e7f7f8b5ecab1c7e5c2dbc73c1b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.1"
|
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91
|
sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91
|
||||||
@ -366,14 +342,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.5.0"
|
version: "4.5.0"
|
||||||
flutter_background:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_background
|
|
||||||
sha256: "035c31a738509d67ee70bbf174e5aa7db462c371e838ec8259700c5c4e7ca17f"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.0"
|
|
||||||
flutter_cache_manager:
|
flutter_cache_manager:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -516,10 +484,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_webrtc
|
name: flutter_webrtc
|
||||||
sha256: "1c61bc08d14be57ac28e9e540c44b8b1b9ab1b25bbdb66a8c658e61a3211cc5d"
|
sha256: fd5f115a08dcdc00b988bea3003c956f1b60a78a61d899cbddfb44f5d0e44d4a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.10.7"
|
version: "0.10.8"
|
||||||
font_awesome_flutter:
|
font_awesome_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -708,10 +676,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: livekit_client
|
name: livekit_client
|
||||||
sha256: "3792c4339db035d0320f1be8e2d99f394e5f3fe4215f95b371ce43db44a9d150"
|
sha256: e743aadc7dfbdcc9a1bc447cfe81e6f85346b624d972a71db3ce0f11b8a00a3b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.5"
|
version: "2.1.6"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -936,54 +904,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.11"
|
version: "2.0.11"
|
||||||
platform_device_id:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: platform_device_id
|
|
||||||
sha256: "7a12ec84de4a823bb10eba2f0e1ad29e2365abba17790489a0d78029904f562e"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.1"
|
|
||||||
platform_device_id_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: platform_device_id_linux
|
|
||||||
sha256: "994b1608593e527a629af2d5aeb241c60d308d3434bc78b0f6fcb3c1a02dff43"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
platform_device_id_macos:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: platform_device_id_macos
|
|
||||||
sha256: "968db2a504c611294b12a031b3734432d6df10553a0d3ae3b33ed21abfdbaba0"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
platform_device_id_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: platform_device_id_platform_interface
|
|
||||||
sha256: c61607594252aaddacf3e4c4371ab08f2ef85ff427817fa6e48a169429610c46
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
platform_device_id_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: platform_device_id_web
|
|
||||||
sha256: "58e124594e1165db7f108395a780b1d1e1cd403021978e5228cf4289fbe736d5"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
platform_device_id_windows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: platform_device_id_windows
|
|
||||||
sha256: dbf8dcf03ad8555320ebae2403a3081b79f137f37661874e161fe2de0a84eeeb
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1048,6 +968,62 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.2.0"
|
version: "8.2.0"
|
||||||
|
shared_preferences:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: shared_preferences
|
||||||
|
sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.3"
|
||||||
|
shared_preferences_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shared_preferences_android
|
||||||
|
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.2.3"
|
||||||
|
shared_preferences_foundation:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shared_preferences_foundation
|
||||||
|
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.0"
|
||||||
|
shared_preferences_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shared_preferences_linux
|
||||||
|
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.2"
|
||||||
|
shared_preferences_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shared_preferences_platform_interface
|
||||||
|
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.2"
|
||||||
|
shared_preferences_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shared_preferences_web
|
||||||
|
sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.0"
|
||||||
|
shared_preferences_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: shared_preferences_windows
|
||||||
|
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.2"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -1257,10 +1233,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: video_player_android
|
name: video_player_android
|
||||||
sha256: "4f77780499ebbdb3a8387f3de7a9d07a7665cfb3a3741177c44a52353fe41d64"
|
sha256: "9529001630e42988f755772972d5014d30121610700e8e502278a245939f8fc8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.16"
|
version: "2.5.0"
|
||||||
video_player_avfoundation:
|
video_player_avfoundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -62,13 +62,13 @@ dependencies:
|
|||||||
livekit_client: ^2.1.5
|
livekit_client: ^2.1.5
|
||||||
flutter_webrtc: ^0.10.7
|
flutter_webrtc: ^0.10.7
|
||||||
wakelock_plus: ^1.2.5
|
wakelock_plus: ^1.2.5
|
||||||
flutter_background: ^1.2.0
|
|
||||||
cached_network_image: ^3.3.1
|
cached_network_image: ^3.3.1
|
||||||
sentry_flutter: ^8.2.0
|
sentry_flutter: ^8.2.0
|
||||||
firebase_core: ^3.0.0
|
firebase_core: ^3.0.0
|
||||||
firebase_messaging: ^15.0.0
|
firebase_messaging: ^15.0.0
|
||||||
platform_device_id: ^1.0.1
|
|
||||||
package_info_plus: ^8.0.0
|
package_info_plus: ^8.0.0
|
||||||
|
device_info_plus: ^10.1.0
|
||||||
|
shared_preferences: ^2.2.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
|
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
|
||||||
#include <livekit_client/live_kit_plugin.h>
|
#include <livekit_client/live_kit_plugin.h>
|
||||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||||
#include <platform_device_id_windows/platform_device_id_windows_plugin.h>
|
|
||||||
#include <sentry_flutter/sentry_flutter_plugin.h>
|
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||||
#include <url_launcher_windows/url_launcher_windows.h>
|
#include <url_launcher_windows/url_launcher_windows.h>
|
||||||
#include <video_player_win/video_player_win_plugin_c_api.h>
|
#include <video_player_win/video_player_win_plugin_c_api.h>
|
||||||
@ -33,8 +32,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
|
|||||||
registry->GetRegistrarForPlugin("LiveKitPlugin"));
|
registry->GetRegistrarForPlugin("LiveKitPlugin"));
|
||||||
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||||
PlatformDeviceIdWindowsPluginRegisterWithRegistrar(
|
|
||||||
registry->GetRegistrarForPlugin("PlatformDeviceIdWindowsPlugin"));
|
|
||||||
SentryFlutterPluginRegisterWithRegistrar(
|
SentryFlutterPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
|
registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
|
||||||
UrlLauncherWindowsRegisterWithRegistrar(
|
UrlLauncherWindowsRegisterWithRegistrar(
|
||||||
|
@ -10,7 +10,6 @@ list(APPEND FLUTTER_PLUGIN_LIST
|
|||||||
flutter_webrtc
|
flutter_webrtc
|
||||||
livekit_client
|
livekit_client
|
||||||
permission_handler_windows
|
permission_handler_windows
|
||||||
platform_device_id_windows
|
|
||||||
sentry_flutter
|
sentry_flutter
|
||||||
url_launcher_windows
|
url_launcher_windows
|
||||||
video_player_win
|
video_player_win
|
||||||
|
Loading…
Reference in New Issue
Block a user