diff --git a/android/app/build.gradle b/android/app/build.gradle index c12fd8560..436c5d9e5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -384,16 +384,6 @@ dependencies { // Google Play libraries implementation 'com.android.billingclient:billing:6.2.0' - // lib that simplifies event bus communication between activities, fragments, threads, services, etc - implementation 'org.greenrobot:eventbus:3.3.1' - - // https://mvnrepository.com/artifact/net.jodah/expiringmap -// implementation group: 'net.jodah', name: 'expiringmap', version: '0.5.9' -// implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.7.0' -// implementation group: 'commons-codec', name: 'commons-codec', version: '1.12' -// https://mvnrepository.com/artifact/javax.mail/mail -// implementation group: 'javax.mail', name: 'mail', version: '1.4.7' - implementation 'com.stripe:stripe-android:20.17.0' annotationProcessor "org.androidannotations:androidannotations:$androidAnnotationsVersion" implementation("org.androidannotations:androidannotations-api:$androidAnnotationsVersion") diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index dbfd1470a..84bca66ab 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -109,6 +109,10 @@ -keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken -keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken +# J2ObjC Annotations +-dontwarn com.google.j2objc.annotations.ReflectionSupport$Level +-dontwarn com.google.j2objc.annotations.ReflectionSupport +-dontwarn com.google.j2objc.annotations.RetainedWith ## Lifecycle #-keep class androidx.lifecycle.** {*;} diff --git a/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt b/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt index d422991c2..b9bcc7ad1 100644 --- a/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt +++ b/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt @@ -25,6 +25,7 @@ import io.lantern.model.Vpn import org.getlantern.lantern.BuildConfig import org.getlantern.lantern.LanternApp import org.getlantern.lantern.model.Bandwidth +import org.getlantern.lantern.event.EventHandler import org.getlantern.lantern.model.Stats import org.getlantern.lantern.model.Utils import org.getlantern.mobilesdk.Logger @@ -32,7 +33,6 @@ import org.getlantern.mobilesdk.Settings import org.getlantern.mobilesdk.StartResult import org.getlantern.mobilesdk.util.DnsDetector import org.getlantern.mobilesdk.util.LanguageHelper -import org.greenrobot.eventbus.EventBus import java.io.PrintWriter import java.io.StringWriter import java.lang.reflect.InvocationTargetException @@ -136,7 +136,7 @@ abstract class SessionManager(application: Application) : Session { val oldLocale = prefs.getString(LANG, "") prefs.edit().putString(LANG, locale.toString()).apply() if (locale.language != oldLocale) { - EventBus.getDefault().post(locale) + EventHandler.postLocaleEvent(locale) } } } @@ -183,7 +183,7 @@ abstract class SessionManager(application: Application) : Session { } override fun updateAdSettings(adSettings: AdSettings) { - EventBus.getDefault().post(adSettings) + } /** @@ -356,7 +356,7 @@ abstract class SessionManager(application: Application) : Session { val b = Bandwidth(percent, remaining, allowed, ttlSeconds) Logger.debug("bandwidth", b.toString()) saveLatestBandwidth(b) - EventBus.getDefault().postSticky(b) + EventHandler.postBandwidthEvent(b) } fun setSurveyLinkOpened(url: String?) { @@ -401,7 +401,7 @@ abstract class SessionManager(application: Application) : Session { } val st = Stats(city, country, countryCode, httpsUpgrades, adsBlocked, hasSucceedingProxy) - EventBus.getDefault().postSticky(st) + EventHandler.postStatsEvent(st) // save last location received prefs.edit().putString(SERVER_COUNTRY, country) diff --git a/android/app/src/main/java/org/getlantern/mobilesdk/util/DnsDetector.java b/android/app/src/main/java/org/getlantern/mobilesdk/util/DnsDetector.java index 3afa957df..486015e26 100644 --- a/android/app/src/main/java/org/getlantern/mobilesdk/util/DnsDetector.java +++ b/android/app/src/main/java/org/getlantern/mobilesdk/util/DnsDetector.java @@ -14,7 +14,6 @@ import org.getlantern.mobilesdk.Logger; import org.getlantern.mobilesdk.model.Event; -import org.greenrobot.eventbus.EventBus; import java.net.Inet6Address; import java.net.InetAddress; @@ -114,7 +113,6 @@ private String doGetDnsServer() { public void publishNetworkAvailability() { if (findActiveNetwork() == null) { Logger.debug(TAG, "No network available"); - EventBus.getDefault().postSticky(Event.NoNetworkAvailable); } } diff --git a/android/app/src/main/kotlin/org/getlantern/lantern/MainActivity.kt b/android/app/src/main/kotlin/org/getlantern/lantern/MainActivity.kt index bdbcd0a12..7831e55ff 100644 --- a/android/app/src/main/kotlin/org/getlantern/lantern/MainActivity.kt +++ b/android/app/src/main/kotlin/org/getlantern/lantern/MainActivity.kt @@ -27,20 +27,19 @@ import io.lantern.model.VpnModel import kotlinx.coroutines.* import okhttp3.Response import org.getlantern.lantern.activity.WebViewActivity_ +import org.getlantern.lantern.event.AppEvent +import org.getlantern.lantern.event.AppEvent.* +import org.getlantern.lantern.event.EventHandler import org.getlantern.lantern.event.EventManager import org.getlantern.lantern.model.AccountInitializationStatus -import org.getlantern.lantern.model.Bandwidth import org.getlantern.lantern.model.LanternHttpClient import org.getlantern.lantern.model.LanternHttpClient.PlansV3Callback import org.getlantern.lantern.model.LanternHttpClient.ProUserCallback -import org.getlantern.lantern.model.LanternStatus import org.getlantern.lantern.model.PaymentMethods import org.getlantern.lantern.model.ProError import org.getlantern.lantern.model.ProPlan import org.getlantern.lantern.model.ProUser -import org.getlantern.lantern.model.Stats import org.getlantern.lantern.model.Utils -import org.getlantern.lantern.model.VpnState import org.getlantern.lantern.notification.NotificationHelper import org.getlantern.lantern.notification.NotificationReceiver import org.getlantern.lantern.plausible.Plausible @@ -53,13 +52,12 @@ import org.getlantern.mobilesdk.model.Event import org.getlantern.mobilesdk.model.LoConf import org.getlantern.mobilesdk.model.LoConf.Companion.fetch import org.getlantern.mobilesdk.model.Survey -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.greenrobot.eventbus.ThreadMode import java.util.Locale import java.util.concurrent.* -class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, +class MainActivity : + FlutterActivity(), + MethodChannel.MethodCallHandler, CoroutineScope by MainScope() { private lateinit var messagingModel: MessagingModel private lateinit var vpnModel: VpnModel @@ -84,31 +82,72 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, replicaModel = ReplicaModel(this, flutterEngine) receiver = NotificationReceiver() notifications = NotificationHelper(this, receiver) - eventManager = object : EventManager("lantern_event_channel", flutterEngine) { - override fun onListen(event: Event) { - if (LanternApp.getSession().lanternDidStart()) { - Plausible.init(applicationContext) - Logger.debug(TAG, "Plausible initialized") - Plausible.enable(true) - fetchLoConf() - Logger.debug( - TAG, - "fetchLoConf() finished at ${System.currentTimeMillis() - start}", + eventManager = + object : EventManager("lantern_event_channel", flutterEngine) { + override fun onListen(event: Event) { + if (LanternApp.getSession().lanternDidStart()) { + Plausible.init(applicationContext) + Logger.debug(TAG, "Plausible initialized") + Plausible.enable(true) + fetchLoConf() + Logger.debug( + TAG, + "fetchLoConf() finished at ${System.currentTimeMillis() - start}", + ) + } + LanternApp.getSession().dnsDetector.publishNetworkAvailability() + } + } + EventHandler.subscribeAppEvents { appEvent -> + when (appEvent) { + is AppEvent.AccountInitializationEvent -> onInitializingAccount(appEvent.status) + is AppEvent.BandwidthEvent -> { + val event = appEvent as AppEvent.BandwidthEvent + Logger.debug("bandwidth updated", event.bandwidth.toString()) + vpnModel.updateBandwidth(event.bandwidth) + } + is AppEvent.LoConfEvent -> { + doProcessLoconf(appEvent.loconf) + } + is AppEvent.LocaleEvent -> { + // Recreate the activity when the language changes + recreate() + } + is AppEvent.StatsEvent -> { + val stats = appEvent.stats + Logger.debug("Stats updated", stats.toString()) + sessionModel.saveServerInfo( + Vpn.ServerInfo + .newBuilder() + .setCity(stats.city) + .setCountry(stats.country) + .setCountryCode(stats.countryCode) + .build(), ) } - LanternApp.getSession().dnsDetector.publishNetworkAvailability() + is AppEvent.StatusEvent -> { + updateUserData() + updatePaymentMethods() + updateCurrencyList() + } + is AppEvent.VpnStateEvent -> { + updateStatus(appEvent.vpnState.useVpn) + } + else -> { + Logger.debug(TAG, "Unknown app event " + appEvent) + } } } - MethodChannel( flutterEngine.dartExecutor.binaryMessenger, "lantern_method_channel", ).setMethodCallHandler(this) - flutterNavigation = MethodChannel( - flutterEngine.dartExecutor.binaryMessenger, - "navigation", - ) + flutterNavigation = + MethodChannel( + flutterEngine.dartExecutor.binaryMessenger, + "navigation", + ) flutterNavigation.setMethodCallHandler { call, _ -> if (call.method == "ready") { @@ -131,10 +170,6 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, super.onCreate(savedInstanceState) Logger.debug(TAG, "Default Locale is %1\$s", Locale.getDefault()) - if (!EventBus.getDefault().isRegistered(this)) { - EventBus.getDefault().register(this) - } - Logger.debug(TAG, "EventBus.register finished at ${System.currentTimeMillis() - start}") val intent = Intent(this, LanternService_::class.java) context.startService(intent) @@ -198,7 +233,6 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, vpnModel.destroy() sessionModel.destroy() replicaModel.destroy() - EventBus.getDefault().unregister(this) } override fun onMethodCall( @@ -220,14 +254,13 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, * settings */ private fun fetchLoConf() { - fetch { loconf -> runOnUiThread { processLoconf(loconf) } } + fetch { loconf -> runOnUiThread { doProcessLoconf(loconf) } } } - @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) - fun onInitializingAccount(status: AccountInitializationStatus) { + fun onInitializingAccount(status: AccountInitializationStatus.Status) { val appName = getString(R.string.app_name) - when (status.status) { + when (status) { AccountInitializationStatus.Status.PROCESSING -> { accountInitDialog = AlertDialog.Builder(this).create() accountInitDialog?.setCancelable(false) @@ -237,7 +270,6 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, val tvMessage: TextView = dialogView.findViewById(R.id.tvMessage) tvMessage.text = getString(R.string.init_account, appName) dialogView.findViewById(R.id.btnCancel).setOnClickListener { - EventBus.getDefault().removeStickyEvent(status) accountInitDialog?.dismiss() finish() } @@ -245,12 +277,10 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, } AccountInitializationStatus.Status.SUCCESS -> { - EventBus.getDefault().removeStickyEvent(status) accountInitDialog?.let { it.dismiss() } } AccountInitializationStatus.Status.FAILURE -> { - EventBus.getDefault().removeStickyEvent(status) accountInitDialog?.let { it.dismiss() } Utils.showAlertDialog( @@ -266,38 +296,6 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, } } - @Subscribe(threadMode = ThreadMode.MAIN) - fun vpnStateChanged(state: VpnState) { - updateStatus(state.useVpn) - } - - @Subscribe(threadMode = ThreadMode.MAIN) - fun lanternStarted(status: LanternStatus) { - updateUserData() - updatePaymentMethods() - updateCurrencyList(); - } - - @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) - fun onEvent(event: Event) { - eventManager.onNewEvent(event = event) - } - - @Subscribe(threadMode = ThreadMode.MAIN) - fun statsUpdated(stats: Stats) { - Logger.debug("Stats updated", stats.toString()) - sessionModel.saveServerInfo( - Vpn.ServerInfo.newBuilder().setCity(stats.city).setCountry(stats.country) - .setCountryCode(stats.countryCode).build(), - ) - } - - @Subscribe(threadMode = ThreadMode.MAIN) - fun bandwidthUpdated(bandwidth: Bandwidth) { - Logger.debug("bandwidth updated", bandwidth.toString()) - vpnModel.updateBandwidth(bandwidth) - } - private fun updateUserData() { lanternClient.userData( object : ProUserCallback { @@ -332,50 +330,51 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, override fun onSuccess( proPlans: Map, paymentMethods: List, - - ) { + ) { Logger.debug( TAG, - "Successfully fetched payment methods with payment methods: $paymentMethods and plans $proPlans" + "Successfully fetched payment methods with payment methods: $paymentMethods and plans $proPlans", ) sessionModel.processPaymentMethods(proPlans, paymentMethods) } - } + }, ) } private fun updateCurrencyList() { val url = LanternHttpClient.createProUrl("/supported-currencies") - lanternClient.get(url, object : LanternHttpClient.ProCallback { - override fun onFailure(throwable: Throwable?, error: ProError?) { - Logger.error(TAG, "Unable to fetch currency list: $error", throwable) + lanternClient.get( + url, + object : LanternHttpClient.ProCallback { + override fun onFailure( + throwable: Throwable?, + error: ProError?, + ) { + Logger.error(TAG, "Unable to fetch currency list: $error", throwable) /* retry to fetch currency list again fetch until we get the currency list retry after 5 seconds - */ - CoroutineScope(Dispatchers.IO).launch { - delay(5000) - updateCurrencyList() + */ + CoroutineScope(Dispatchers.IO).launch { + delay(5000) + updateCurrencyList() + } } - } - override fun onSuccess(response: Response?, result: JsonObject?) { - val currencies = result?.getAsJsonArray("supported-currencies") - val currencyList = mutableListOf() - currencies?.forEach { - currencyList.add(it.asString.lowercase()) + override fun onSuccess( + response: Response?, + result: JsonObject?, + ) { + val currencies = result?.getAsJsonArray("supported-currencies") + val currencyList = mutableListOf() + currencies?.forEach { + currencyList.add(it.asString.lowercase()) + } + LanternApp.getSession().setCurrencyList(currencyList) } - LanternApp.getSession().setCurrencyList(currencyList) - } - - }) - } - - - @Subscribe(threadMode = ThreadMode.MAIN) - fun processLoconf(loconf: LoConf) { - doProcessLoconf(loconf) + }, + ) } private fun doProcessLoconf(loconf: LoConf) { @@ -498,13 +497,14 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, msg.append(" ") var description = "..." try { - description = getString( - resources.getIdentifier( - permission, - "string", - "org.getlantern.lantern", - ), - ) + description = + getString( + resources.getIdentifier( + permission, + "string", + "org.getlantern.lantern", + ), + ) } catch (t: Throwable) { Logger.warn( PERMISSIONS_TAG, @@ -563,7 +563,7 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, } } else { sendBroadcast(notifications.disconnectIntent()) - //Update VPN status + // Update VPN status vpnModel.updateStatus(false) } } @@ -632,12 +632,13 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, } private fun startVpnService() { - val intent: Intent = Intent( - this, - LanternVpnService::class.java, - ).apply { - action = LanternVpnService.ACTION_CONNECT - } + val intent: Intent = + Intent( + this, + LanternVpnService::class.java, + ).apply { + action = LanternVpnService.ACTION_CONNECT + } startService(intent) notifications.vpnConnectedNotification() @@ -650,12 +651,6 @@ class MainActivity : FlutterActivity(), MethodChannel.MethodCallHandler, vpnModel.updateStatus(useVpn) } - // Recreate the activity when the language changes - @Subscribe(threadMode = ThreadMode.MAIN) - fun languageChanged(locale: Locale) { - recreate() - } - companion object { private val TAG = MainActivity::class.java.simpleName private val SURVEY_TAG = "$TAG.survey" diff --git a/android/app/src/main/kotlin/org/getlantern/lantern/event/EventBus.kt b/android/app/src/main/kotlin/org/getlantern/lantern/event/EventBus.kt new file mode 100644 index 000000000..add2f715a --- /dev/null +++ b/android/app/src/main/kotlin/org/getlantern/lantern/event/EventBus.kt @@ -0,0 +1,113 @@ +package org.getlantern.lantern.event + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.filterIsInstance +import kotlinx.coroutines.launch +import org.getlantern.lantern.model.AccountInitializationStatus +import org.getlantern.lantern.model.Bandwidth +import org.getlantern.lantern.model.LanternStatus +import org.getlantern.lantern.model.LanternStatus.Status +import org.getlantern.lantern.model.Stats +import org.getlantern.lantern.model.VpnState +import org.getlantern.mobilesdk.model.LoConf +import kotlin.coroutines.coroutineContext +import java.util.Locale + +object EventBus { + private val _events = MutableSharedFlow() + val events = _events.asSharedFlow() + + suspend fun publish(event: Any) { + _events.emit(event) + } + + suspend inline fun subscribe(crossinline onEvent: (T) -> Unit) { + events + .filterIsInstance() + .collectLatest { event -> + coroutineContext.ensureActive() + onEvent(event) + } + } +} + +// EventHandler is used to publish app events that subscribers can listen to from anywhere +internal object EventHandler { + fun postAccountInitializationStatus(status: AccountInitializationStatus.Status) { + postAppEvent(AppEvent.AccountInitializationEvent(status)) + } + + fun postBandwidthEvent(bandwidth: Bandwidth) { + postAppEvent(AppEvent.BandwidthEvent(bandwidth)) + } + + fun postLocaleEvent(locale: Locale) { + postAppEvent(AppEvent.LocaleEvent(locale)) + } + + fun postLoConfEvent(loconf: LoConf) { + postAppEvent(AppEvent.LoConfEvent(loconf)) + } + + fun postStatsEvent(stats: Stats) { + postAppEvent(AppEvent.StatsEvent(stats)) + } + + fun postStatusEvent(status: LanternStatus) { + postAppEvent(AppEvent.StatusEvent(status)) + } + + fun postVpnStateEvent(vpnState: VpnState) { + postAppEvent(AppEvent.VpnStateEvent(vpnState)) + } + + fun postAppEvent(appEvent: AppEvent) { + CoroutineScope(Dispatchers.IO).launch { + EventBus.publish(appEvent) + } + } + + fun subscribeAppEvents(onEvent: (AppEvent) -> Unit) { + CoroutineScope(Dispatchers.Main + SupervisorJob()).launch { + EventBus.subscribe { appEvent -> + onEvent(appEvent) + } + } + } +} + +sealed class AppEvent { + data class AccountInitializationEvent( + val status: AccountInitializationStatus.Status, + ) : AppEvent() + + data class BandwidthEvent( + val bandwidth: Bandwidth, + ) : AppEvent() + + data class LocaleEvent( + val locale: Locale, + ) : AppEvent() + + data class LoConfEvent( + val loconf: LoConf, + ) : AppEvent() + + data class StatsEvent( + val stats: Stats, + ) : AppEvent() + + data class StatusEvent( + val status: LanternStatus, + ) : AppEvent() + + data class VpnStateEvent( + val vpnState: VpnState, + ) : AppEvent() +} diff --git a/android/app/src/main/kotlin/org/getlantern/lantern/model/LanternSessionManager.kt b/android/app/src/main/kotlin/org/getlantern/lantern/model/LanternSessionManager.kt index cd18fa7fe..c54c37af4 100644 --- a/android/app/src/main/kotlin/org/getlantern/lantern/model/LanternSessionManager.kt +++ b/android/app/src/main/kotlin/org/getlantern/lantern/model/LanternSessionManager.kt @@ -8,7 +8,6 @@ import io.lantern.model.Vpn import org.getlantern.lantern.util.PlansUtil import org.getlantern.mobilesdk.Logger import org.getlantern.mobilesdk.model.SessionManager -import org.greenrobot.eventbus.EventBus import org.joda.time.LocalDateTime import java.text.SimpleDateFormat import java.util.Currency @@ -336,7 +335,6 @@ class LanternSessionManager(application: Application) : SessionManager(applicati } if (user.isProUser) { - EventBus.getDefault().post(UserStatus(user.isActive, user.monthsLeft().toLong())) prefs.edit().putInt(PRO_MONTHS_LEFT, user.monthsLeft()) .putInt(PRO_DAYS_LEFT, user.daysLeft()) .apply() diff --git a/android/app/src/main/kotlin/org/getlantern/lantern/notification/NotificationReceiver.kt b/android/app/src/main/kotlin/org/getlantern/lantern/notification/NotificationReceiver.kt index 12b0eb78e..50a934256 100644 --- a/android/app/src/main/kotlin/org/getlantern/lantern/notification/NotificationReceiver.kt +++ b/android/app/src/main/kotlin/org/getlantern/lantern/notification/NotificationReceiver.kt @@ -4,12 +4,11 @@ import android.app.NotificationManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import org.getlantern.lantern.event.EventHandler import org.getlantern.lantern.model.Utils import org.getlantern.lantern.model.VpnState import org.getlantern.lantern.vpn.LanternVpnService import org.getlantern.mobilesdk.Logger -import org.greenrobot.eventbus.EventBus - class NotificationReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -21,7 +20,7 @@ class NotificationReceiver : BroadcastReceiver() { LanternVpnService::class.java, ) ) { - EventBus.getDefault().post(VpnState(false)) + EventHandler.postVpnStateEvent(VpnState(false)) context.startService( Intent( context, diff --git a/android/app/src/main/kotlin/org/getlantern/lantern/service/LanternService.kt b/android/app/src/main/kotlin/org/getlantern/lantern/service/LanternService.kt index d912d0992..9094a7ddd 100644 --- a/android/app/src/main/kotlin/org/getlantern/lantern/service/LanternService.kt +++ b/android/app/src/main/kotlin/org/getlantern/lantern/service/LanternService.kt @@ -13,6 +13,7 @@ import org.androidannotations.annotations.EService import org.getlantern.lantern.BuildConfig import org.getlantern.lantern.LanternApp import org.getlantern.lantern.R +import org.getlantern.lantern.event.EventHandler import org.getlantern.lantern.model.AccountInitializationStatus import org.getlantern.lantern.model.LanternHttpClient import org.getlantern.lantern.model.LanternStatus @@ -27,7 +28,6 @@ import org.getlantern.mobilesdk.Logger import org.getlantern.mobilesdk.StartResult import org.getlantern.mobilesdk.model.LoConf import org.getlantern.mobilesdk.model.LoConfCallback -import org.greenrobot.eventbus.EventBus import java.util.Random import java.util.concurrent.atomic.AtomicBoolean @@ -104,9 +104,7 @@ open class LanternService : Service(), Runnable { private fun afterStart() { if (LanternApp.getSession().userId().toInt() == 0) { // create a user if no user id is stored - EventBus.getDefault().post( - AccountInitializationStatus(AccountInitializationStatus.Status.PROCESSING), - ) + EventHandler.postAccountInitializationStatus(AccountInitializationStatus.Status.PROCESSING) createUser(0) } @@ -114,13 +112,12 @@ open class LanternService : Service(), Runnable { // check if an update is available autoUpdater.checkForUpdates() } - - EventBus.getDefault().postSticky(LanternStatus(Status.ON)) + EventHandler.postStatusEvent(LanternStatus(Status.ON)) // fetch latest loconf LoConf.Companion.fetch(object : LoConfCallback { override fun onSuccess(loconf: LoConf) { - EventBus.getDefault().post(loconf) + EventHandler.postLoConfEvent(loconf) } }) } @@ -147,9 +144,7 @@ open class LanternService : Service(), Runnable { override fun onFailure(@Nullable throwable: Throwable?, @Nullable error: ProError?) { if (attempts >= MAX_CREATE_USER_TRIES) { Logger.error(TAG, "Max. number of tries made to create Pro user") - EventBus.getDefault().postSticky( - AccountInitializationStatus(AccountInitializationStatus.Status.FAILURE), - ) + EventHandler.postAccountInitializationStatus(AccountInitializationStatus.Status.FAILURE) return } attempts++ @@ -169,10 +164,8 @@ open class LanternService : Service(), Runnable { if (!referral.isEmpty()) { LanternApp.getSession().setCode(referral) } - EventBus.getDefault().postSticky(LanternStatus(Status.ON)) - EventBus.getDefault().postSticky( - AccountInitializationStatus(AccountInitializationStatus.Status.SUCCESS), - ) + EventHandler.postStatusEvent(LanternStatus(Status.ON)) + EventHandler.postAccountInitializationStatus(AccountInitializationStatus.Status.SUCCESS) } } diff --git a/ios/Podfile b/ios/Podfile index ab43886d3..f357745ef 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -38,6 +38,7 @@ target 'Runner' do # pod 'SQLite.swift', '~> 0.12.2' pod 'Toast-Swift', '~> 5.0.1' pod 'CleverAdsSolutions-Base', $casVersion + pod 'Sentry/HybridSDK', '~> 8.29.0' end # target 'LanternTests' do diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b70495750..e0dbb2ac4 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -5,6 +5,9 @@ PODS: - audioplayers_darwin (0.0.1): - Flutter - CleverAdsSolutions-Base (3.5.6) + - connectivity_plus (0.0.1): + - Flutter + - FlutterMacOS - device_info_plus (0.0.1): - Flutter - DKImagePickerController/Core (4.3.9): @@ -44,6 +47,11 @@ PODS: - DKImagePickerController/PhotoGallery - Flutter - Flutter (1.0.0) + - flutter_image_compress_common (1.0.0): + - Flutter + - Mantle + - SDWebImage + - SDWebImageWebPCoder - flutter_inappwebview_ios (0.0.1): - Flutter - flutter_inappwebview_ios/Core (= 0.0.1) @@ -67,7 +75,7 @@ PODS: - Toast - Google-Mobile-Ads-SDK (11.2.0): - GoogleUserMessagingPlatform (>= 1.1) - - google_mobile_ads (1.0.0): + - google_mobile_ads (5.1.0): - Flutter - Google-Mobile-Ads-SDK (~> 11.2.0) - webview_flutter_wkwebview @@ -86,6 +94,9 @@ PODS: - libwebp/sharpyuv (1.3.2) - libwebp/webp (1.3.2): - libwebp/sharpyuv + - Mantle (2.2.0): + - Mantle/extobjc (= 2.2.0) + - Mantle/extobjc (2.2.0) - MTBBarcodeScanner (5.0.11) - OrderedSet (5.0.0) - package_info_plus (0.4.5): @@ -93,7 +104,7 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - permission_handler_apple (9.1.1): + - permission_handler_apple (9.3.0): - Flutter - qr_code_scanner (0.2.0): - Flutter @@ -101,13 +112,14 @@ PODS: - SDWebImage (5.19.2): - SDWebImage/Core (= 5.19.2) - SDWebImage/Core (5.19.2) - - Sentry/HybridSDK (8.21.0): - - SentryPrivate (= 8.21.0) - - sentry_flutter (0.0.1): + - SDWebImageWebPCoder (0.14.6): + - libwebp (~> 1.0) + - SDWebImage/Core (~> 5.17) + - Sentry/HybridSDK (8.29.0) + - sentry_flutter (8.3.0): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.21.0) - - SentryPrivate (8.21.0) + - Sentry/HybridSDK (= 8.29.0) - share_plus (0.0.1): - Flutter - shared_preferences_foundation (0.0.1): @@ -136,10 +148,12 @@ DEPENDENCIES: - app_links (from `.symlinks/plugins/app_links/ios`) - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`) - CleverAdsSolutions-Base (~> 3.5.1) + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - emoji_picker_flutter (from `.symlinks/plugins/emoji_picker_flutter/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - Flutter (from `Flutter`) + - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) @@ -153,6 +167,7 @@ DEPENDENCIES: - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`) + - Sentry/HybridSDK (~> 8.29.0) - sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`) - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) @@ -174,11 +189,12 @@ SPEC REPOS: - Google-Mobile-Ads-SDK - GoogleUserMessagingPlatform - libwebp + - Mantle - MTBBarcodeScanner - OrderedSet - SDWebImage + - SDWebImageWebPCoder - Sentry - - SentryPrivate - SwiftyGif - Toast - Toast-Swift @@ -188,6 +204,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/app_links/ios" audioplayers_darwin: :path: ".symlinks/plugins/audioplayers_darwin/ios" + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/darwin" device_info_plus: :path: ".symlinks/plugins/device_info_plus/ios" emoji_picker_flutter: @@ -196,6 +214,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/file_picker/ios" Flutter: :path: Flutter + flutter_image_compress_common: + :path: ".symlinks/plugins/flutter_image_compress_common/ios" flutter_inappwebview_ios: :path: ".symlinks/plugins/flutter_inappwebview_ios/ios" flutter_keyboard_visibility: @@ -246,46 +266,49 @@ SPEC CHECKSUMS: app_links: e70ca16b4b0f88253b3b3660200d4a10b4ea9795 audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 CleverAdsSolutions-Base: b2b98815a732a72d75dadfde430c5f24eafafdd5 - device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 + connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db + device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 emoji_picker_flutter: fe2e6151c5b548e975d546e6eeb567daf0962a58 - file_picker: ce3938a0df3cc1ef404671531facef740d03f920 + file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0 flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 - flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 + flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83 flutter_pdfview: 25f53dd6097661e6395b17de506e6060585946bd flutter_uploader: 2b07c4d41cf1218f25e6d5b8bcfa2d913838e27c - fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265 + fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c Google-Mobile-Ads-SDK: 5a6d005a6cb5b5e8f4c7b69ca05cdea79c181139 - google_mobile_ads: 5698dd1cd5a3cfc6688abec7db5428f237d6b1ac + google_mobile_ads: 9379c80fdfa9988fb0e105a407890ff8deb3cf86 GoogleUserMessagingPlatform: f131fa7978d2ba88d7426702b057c2cc318e6595 - integration_test: 13825b8a9334a850581300559b8839134b124670 + integration_test: ce0a3ffa1de96d1a89ca0ac26fca7ea18a749ef4 libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 + Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c - package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 - path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c - permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 + package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a - Sentry: ebc12276bd17613a114ab359074096b6b3725203 - sentry_flutter: dff1df05dc39c83d04f9330b36360fc374574c5e - SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe - share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5 - shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 + SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 + Sentry: 016de45ee5ce5fca2a829996f1bfafeb5e62e8b4 + sentry_flutter: 5fb57c5b7e6427a9dc1fedde4269eb65823982d4 + share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e Toast-Swift: 9b6a70f28b3bf0b96c40d46c0c4b9d6639846711 - url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586 - video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe + video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1 wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f webview_flutter_wkwebview: be0f0d33777f1bfd0c9fdcb594786704dbf65f36 -PODFILE CHECKSUM: f41df053e13795ca3bec060038c249ef06910792 +PODFILE CHECKSUM: 523488a8cf8e6f08da1cff051423582c25acb4eb -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 4df9fb849..95ac19d58 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -23,13 +23,12 @@ import sqflite import tray_manager import url_launcher_macos import video_player_avfoundation -import wakelock_macos import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) - ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) + ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) FlutterImageCompressMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterImageCompressMacosPlugin")) @@ -45,6 +44,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { TrayManagerPlugin.register(with: registry.registrar(forPlugin: "TrayManagerPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) - WakelockMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockMacosPlugin")) WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 94112279b..3e629c24a 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -4,8 +4,8 @@ PODS: - audioplayers_darwin (0.0.1): - FlutterMacOS - connectivity_plus (0.0.1): + - Flutter - FlutterMacOS - - ReachabilitySwift - device_info_plus (0.0.1): - FlutterMacOS - emoji_picker_flutter (0.0.1): @@ -24,16 +24,13 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - ReachabilitySwift (5.2.2) - screen_retriever (0.0.1): - FlutterMacOS - - Sentry/HybridSDK (8.21.0): - - SentryPrivate (= 8.21.0) - - sentry_flutter (0.0.1): + - Sentry/HybridSDK (8.29.0) + - sentry_flutter (8.3.0): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.21.0) - - SentryPrivate (8.21.0) + - Sentry/HybridSDK (= 8.29.0) - share_plus (0.0.1): - FlutterMacOS - shared_preferences_foundation (0.0.1): @@ -49,15 +46,13 @@ PODS: - video_player_avfoundation (0.0.1): - Flutter - FlutterMacOS - - wakelock_macos (0.0.1): - - FlutterMacOS - window_manager (0.2.0): - FlutterMacOS DEPENDENCIES: - app_links (from `Flutter/ephemeral/.symlinks/plugins/app_links/macos`) - audioplayers_darwin (from `Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos`) - - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`) + - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin`) - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - emoji_picker_flutter (from `Flutter/ephemeral/.symlinks/plugins/emoji_picker_flutter/macos`) - flutter_image_compress_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_image_compress_macos/macos`) @@ -74,15 +69,12 @@ DEPENDENCIES: - tray_manager (from `Flutter/ephemeral/.symlinks/plugins/tray_manager/macos`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) - - wakelock_macos (from `Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos`) - window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`) SPEC REPOS: trunk: - OrderedSet - - ReachabilitySwift - Sentry - - SentryPrivate EXTERNAL SOURCES: app_links: @@ -90,7 +82,7 @@ EXTERNAL SOURCES: audioplayers_darwin: :path: Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos connectivity_plus: - :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos + :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin device_info_plus: :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos emoji_picker_flutter: @@ -123,36 +115,31 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos video_player_avfoundation: :path: Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin - wakelock_macos: - :path: Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos window_manager: :path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos SPEC CHECKSUMS: app_links: 10e0a0ab602ffaf34d142cd4862f29d34b303b2a audioplayers_darwin: dcad41de4fbd0099cb3749f7ab3b0cb8f70b810c - connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747 - device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f + connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db + device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720 emoji_picker_flutter: 533634326b1c5de9a181ba14b9758e6dfe967a20 flutter_image_compress_macos: c26c3c13ea0f28ae6dea4e139b3292e7729f99f1 flutter_inappwebview_macos: 9600c9df9fdb346aaa8933812009f8d94304203d flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c - package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce - path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c - ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149 + package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38 - Sentry: ebc12276bd17613a114ab359074096b6b3725203 - sentry_flutter: dff1df05dc39c83d04f9330b36360fc374574c5e - SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe - share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7 - shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 + Sentry: 016de45ee5ce5fca2a829996f1bfafeb5e62e8b4 + sentry_flutter: 5fb57c5b7e6427a9dc1fedde4269eb65823982d4 + share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec tray_manager: 9064e219c56d75c476e46b9a21182087930baf90 - url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95 - video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 - wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9 + url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 + video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8 PODFILE CHECKSUM: 9ebaf0ce3d369aaa26a9ea0e159195ed94724cf3 diff --git a/pubspec.lock b/pubspec.lock index 9a4224930..202ecd349 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "61.0.0" + version: "67.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "5.13.0" + version: "6.4.1" animated_loading_border: dependency: "direct main" description: @@ -29,18 +29,18 @@ packages: dependency: "direct main" description: name: app_links - sha256: "3ced568a5d9e309e99af71285666f1f3117bddd0bd5b3317979dccc1a40cada4" + sha256: "96e677810b83707ff5e10fac11e4839daa0ea4e0123c35864c092699165eb3db" url: "https://pub.dev" source: hosted - version: "3.5.1" + version: "6.1.1" args: dependency: transitive description: name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.5.0" async: dependency: transitive description: @@ -53,74 +53,74 @@ packages: dependency: "direct main" description: name: audioplayers - sha256: c05c6147124cd63e725e861335a8b4d57300b80e6e92cea7c145c739223bbaef + sha256: "752039d6aa752597c98ec212e9759519061759e402e7da59a511f39d43aa07d2" url: "https://pub.dev" source: hosted - version: "5.2.1" + version: "6.0.0" audioplayers_android: dependency: transitive description: name: audioplayers_android - sha256: b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5 + sha256: de576b890befe27175c2f511ba8b742bec83765fa97c3ce4282bba46212f58e4 url: "https://pub.dev" source: hosted - version: "4.0.3" + version: "5.0.0" audioplayers_darwin: dependency: transitive description: name: audioplayers_darwin - sha256: "3034e99a6df8d101da0f5082dcca0a2a99db62ab1d4ddb3277bed3f6f81afe08" + sha256: e507887f3ff18d8e5a10a668d7bedc28206b12e10b98347797257c6ae1019c3b url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "6.0.0" audioplayers_linux: dependency: transitive description: name: audioplayers_linux - sha256: "60787e73fefc4d2e0b9c02c69885402177e818e4e27ef087074cf27c02246c9e" + sha256: "3d3d244c90436115417f170426ce768856d8fe4dfc5ed66a049d2890acfa82f9" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.0" audioplayers_platform_interface: dependency: transitive description: name: audioplayers_platform_interface - sha256: "365c547f1bb9e77d94dd1687903a668d8f7ac3409e48e6e6a3668a1ac2982adb" + sha256: "6834dd48dfb7bc6c2404998ebdd161f79cd3774a7e6779e1348d54a3bfdcfaa5" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "7.0.0" audioplayers_web: dependency: transitive description: name: audioplayers_web - sha256: "22cd0173e54d92bd9b2c80b1204eb1eb159ece87475ab58c9788a70ec43c2a62" + sha256: db8fc420dadf80da18e2286c18e746fb4c3b2c5adbf0c963299dde046828886d url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "5.0.0" audioplayers_windows: dependency: transitive description: name: audioplayers_windows - sha256: "9536812c9103563644ada2ef45ae523806b0745f7a78e89d1b5fb1951de90e1a" + sha256: "8605762dddba992138d476f6a0c3afd9df30ac5b96039929063eceed416795c2" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.0" auto_route: dependency: "direct main" description: name: auto_route - sha256: eb33554581a0a4aa7e6da0f13a44291a55bf71359012f1d9feb41634ff908ff8 + sha256: "878186aae276296bf1cfc0a02cd2788cfb473eb622e0f5e4293f40ecdf86d80d" url: "https://pub.dev" source: hosted - version: "7.9.2" + version: "8.2.0" auto_route_generator: dependency: "direct dev" description: name: auto_route_generator - sha256: "11067a3bcd643812518fe26c0c9ec073990286cabfd9d74b6da9ef9b913c4d22" + sha256: ba28133d3a3bf0a66772bcc98dade5843753cd9f1a8fb4802b842895515b67d3 url: "https://pub.dev" source: hosted - version: "7.3.2" + version: "8.0.0" back_button_interceptor: dependency: transitive description: @@ -181,10 +181,10 @@ packages: dependency: transitive description: name: build_daemon - sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" build_resolvers: dependency: transitive description: @@ -197,18 +197,18 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" + sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7" url: "https://pub.dev" source: hosted - version: "2.4.9" + version: "2.4.11" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe url: "https://pub.dev" source: hosted - version: "7.3.0" + version: "7.3.1" built_collection: dependency: transitive description: @@ -221,10 +221,10 @@ packages: dependency: transitive description: name: built_value - sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.9.1" + version: "8.9.2" cached_network_image: dependency: "direct main" description: @@ -245,18 +245,18 @@ packages: dependency: transitive description: name: cached_network_image_web - sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316" + sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" catcher_2: dependency: "direct main" description: name: catcher_2 - sha256: "3c8f6cedc8c5eab61192830096d4f303900a5d0bddbf96a07ff9f7a8d5ff8fcd" + sha256: "2c2c6f8cf8c817730cd1dbb010d55292396930e7a3d42c04c3039e3fd411a2f8" url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "1.2.6" characters: dependency: transitive description: @@ -309,18 +309,18 @@ packages: dependency: transitive description: name: connectivity_plus - sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0" + sha256: db7a4e143dc72cc3cb2044ef9b052a7ebfe729513e6a82943bc3526f784365b8 url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "6.0.3" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface - sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a + sha256: b6a56efe1e6675be240de39107281d4034b64ac23438026355b4234042a35adb url: "https://pub.dev" source: hosted - version: "1.2.4" + version: "2.0.0" convert: dependency: transitive description: @@ -333,10 +333,10 @@ packages: dependency: transitive description: name: coverage - sha256: "8acabb8306b57a409bf4c83522065672ee13179297a6bb0cb9ead73948df7c76" + sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e" url: "https://pub.dev" source: hosted - version: "1.7.2" + version: "1.8.0" credit_card_type_detector: dependency: transitive description: @@ -357,10 +357,10 @@ packages: dependency: transitive description: name: cross_file - sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e + sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32" url: "https://pub.dev" source: hosted - version: "0.3.3+8" + version: "0.3.4+1" crypto: dependency: transitive description: @@ -381,10 +381,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.6" dbus: dependency: transitive description: @@ -397,10 +397,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" + sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91 url: "https://pub.dev" source: hosted - version: "9.1.2" + version: "10.1.0" device_info_plus_platform_interface: dependency: transitive description: @@ -413,10 +413,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "0978e9a3e45305a80a7210dbeaf79d6ee8bee33f70c8e542dc654c952070217f" + sha256: "11e40df547d418cc0c4900a9318b26304e665da6fa4755399a9ff9efd09034b5" url: "https://pub.dev" source: hosted - version: "5.4.2+1" + version: "5.4.3+1" dotted_border: dependency: "direct main" description: @@ -469,18 +469,18 @@ packages: dependency: "direct main" description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" ffigen: dependency: "direct dev" description: name: ffigen - sha256: dead012f29db2be71ea152458f5eab600de98fbc244e01088ae6bf2616bceca7 + sha256: "3e12e80ccb6539bb3917217bb6f32709220efb737de0d0fa8736da0b7cb507da" url: "https://pub.dev" source: hosted - version: "11.0.0" + version: "12.0.0" file: dependency: transitive description: @@ -493,10 +493,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: be325344c1f3070354a1d84a231a1ba75ea85d413774ec4bdf444c023342e030 + sha256: "2ca051989f69d1b2ca012b2cf3ccf78c70d40144f0861ff2c063493f7c8c3d45" url: "https://pub.dev" source: hosted - version: "5.5.0" + version: "8.0.5" filesize: dependency: "direct main" description: @@ -538,10 +538,10 @@ packages: dependency: "direct main" description: name: flutter_cache_manager - sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" + sha256: "395d6b7831f21f3b989ebedbb785545932adb9afe2622c1ffacf7f4b53a7e544" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.3.2" flutter_dotenv: dependency: "direct main" description: @@ -612,12 +612,13 @@ packages: source: hosted version: "6.0.0" flutter_inappwebview_android: - dependency: transitive + dependency: "direct overridden" description: - name: flutter_inappwebview_android - sha256: d247f6ed417f1f8c364612fa05a2ecba7f775c8d0c044c1d3b9ee33a6515c421 - url: "https://pub.dev" - source: hosted + path: flutter_inappwebview_android + ref: d89b1d32638b49dfc58c4b7c84153be0c269d057 + resolved-ref: d89b1d32638b49dfc58c4b7c84153be0c269d057 + url: "https://github.com/holzgeist/flutter_inappwebview" + source: git version: "1.0.13" flutter_inappwebview_internal_annotations: dependency: transitive @@ -663,10 +664,10 @@ packages: dependency: "direct main" description: name: flutter_keyboard_visibility - sha256: "4983655c26ab5b959252ee204c2fffa4afeb4413cd030455194ec0caa3b8e7cb" + sha256: "98664be7be0e3ffca00de50f7f6a287ab62c763fc8c762e0a21584584a3ff4f8" url: "https://pub.dev" source: hosted - version: "5.4.1" + version: "6.0.0" flutter_keyboard_visibility_linux: dependency: transitive description: @@ -711,18 +712,18 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "4.0.0" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications - sha256: "401643a6ea9d8451365f2ec11145335bf130560cfde367bdf8f0be6d60f89479" + sha256: "40e6fbd2da7dcc7ed78432c5cdab1559674b4af035fddbfb2f9a8f9c2112fcef" url: "https://pub.dev" source: hosted - version: "15.1.3" + version: "17.1.2" flutter_local_notifications_linux: dependency: transitive description: @@ -735,10 +736,10 @@ packages: dependency: transitive description: name: flutter_local_notifications_platform_interface - sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" + sha256: "340abf67df238f7f0ef58f4a26d2a83e1ab74c77ab03cd2b2d5018ac64db30b7" url: "https://pub.dev" source: hosted - version: "7.0.0+1" + version: "7.1.0" flutter_localizations: dependency: "direct main" description: flutter @@ -756,18 +757,18 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "5b24061317f850af858ef7151dadbb6eb77c1c449c954c7bb064e8a5e0e7d81f" + sha256: "85cc6f7daeae537844c92e2d56e2aff61b00095f8f77913b529ea4be12fc45ea" url: "https://pub.dev" source: hosted - version: "0.6.20" + version: "0.7.2+1" flutter_multi_formatter: dependency: "direct main" description: name: flutter_multi_formatter - sha256: "4798b3ee8a3c00271565e77dc8886f02b52354c3ac0d845e07d1715d159959f6" + sha256: "3495dc0056c96e467039a05bd184a5285c271a0efb2024a7030c7e84ba828994" url: "https://pub.dev" source: hosted - version: "2.12.4" + version: "2.12.8" flutter_pdfview: dependency: "direct main" description: @@ -780,10 +781,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da + sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.0.20" flutter_staggered_grid_view: dependency: transitive description: @@ -831,18 +832,18 @@ packages: dependency: transitive description: name: fluttertoast - sha256: dfdde255317af381bfc1c486ed968d5a43a2ded9c931e87cbecd88767d6a71c1 + sha256: "7eae679e596a44fdf761853a706f74979f8dd3cd92cf4e23cae161fda091b847" url: "https://pub.dev" source: hosted - version: "8.2.4" + version: "8.2.6" frontend_server_client: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" fuchsia_remote_debug_protocol: dependency: transitive description: flutter @@ -868,10 +869,10 @@ packages: dependency: "direct main" description: name: google_mobile_ads - sha256: f07d4e2ebf56181e8dd18ee810607e84aeac8add5251bb44c1c886af47ff021a + sha256: e2d18992d30b2be77cb6976b931112fc3c4612feffb5eb7a8b036bd7a64934da url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.0" graphs: dependency: transitive description: @@ -908,10 +909,10 @@ packages: dependency: transitive description: name: http - sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" http_multi_server: dependency: transitive description: @@ -932,10 +933,10 @@ packages: dependency: "direct main" description: name: i18n_extension - sha256: "514fca4f34e8eb73cd29d2938225bf139b1ff3cede462c0b2875f60f470e64b2" + sha256: "296f7b091b9feb7f682360cece9c335f5b0b35121c31bd1993bbdcf1985c272e" url: "https://pub.dev" source: hosted - version: "11.0.12" + version: "12.0.1" i18n_extension_core: dependency: transitive description: @@ -969,18 +970,18 @@ packages: dependency: "direct main" description: name: internet_connection_checker_plus - sha256: "7daf4458c62923f4c7f3b54b1b3191bc3d8813e69a45722ef0ff5fc3ef2ef686" + sha256: "45d33532937eb931a14fb1f885c4b0ade6332983ba98349920fca0a23751d7c9" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.2" intl: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.19.0" io: dependency: transitive description: @@ -1001,42 +1002,42 @@ packages: dependency: transitive description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.9.0" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "4.0.0" loader_overlay: dependency: "direct main" description: @@ -1049,10 +1050,10 @@ packages: dependency: "direct main" description: name: logger - sha256: "8c94b8c219e7e50194efc8771cd0e9f10807d8d3e219af473d89b06cc2ee4e04" + sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.3.0" logging: dependency: transitive description: @@ -1105,10 +1106,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" mime: dependency: "direct main" description: @@ -1169,18 +1170,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" + sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "8.0.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.0" path: dependency: transitive description: @@ -1209,26 +1210,26 @@ packages: dependency: "direct main" description: name: path_provider - sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b + sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" + sha256: bca87b0165ffd7cdb9cad8edd22d18d2201e886d9a9f19b4fb3452ea7df3a72a url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.6" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" path_provider_linux: dependency: transitive description: @@ -1257,42 +1258,50 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: bc56bfe9d3f44c3c612d8d393bd9b174eb796d706759f9b495ac254e4294baa5 + sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb" url: "https://pub.dev" source: hosted - version: "10.4.5" + version: "11.3.1" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "59c6322171c29df93a22d150ad95f3aa19ed86542eaec409ab2691b8f35f9a47" + sha256: b29a799ca03be9f999aa6c39f7de5209482d638e6f857f6b93b0875c618b7e54 url: "https://pub.dev" source: hosted - version: "10.3.6" + version: "12.0.7" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" + sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0 url: "https://pub.dev" source: hosted - version: "9.1.4" + version: "9.4.5" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" + url: "https://pub.dev" + source: hosted + version: "0.1.1" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" + sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20" url: "https://pub.dev" source: hosted - version: "3.12.0" + version: "4.2.1" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.1" petitparser: dependency: transitive description: @@ -1369,10 +1378,10 @@ packages: dependency: transitive description: name: pubspec_parse - sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 url: "https://pub.dev" source: hosted - version: "1.2.3" + version: "1.3.0" qr: dependency: transitive description: @@ -1441,58 +1450,58 @@ packages: dependency: transitive description: name: sentry - sha256: a460aa48568d47140dd0557410b624d344ffb8c05555107ac65035c1097cf1ad + sha256: "7342ef4c18932881730ac941a07a6e4cf76fe99cd1ea3bef06e53a6a1402dec0" url: "https://pub.dev" source: hosted - version: "7.18.0" + version: "8.3.0" sentry_flutter: dependency: "direct main" description: name: sentry_flutter - sha256: "3d0d1d4e0e407d276ae8128d123263ccbc37e988bae906765efd6f37d544f4c6" + sha256: "475cf49682e4d1eb48caa2577502721bcfdcbb63f215de57b3b246d52f4f7914" url: "https://pub.dev" source: hosted - version: "7.18.0" + version: "8.3.0" share_plus: dependency: "direct main" description: name: share_plus - sha256: "3ef39599b00059db0990ca2e30fca0a29d8b37aae924d60063f8e0184cf20900" + sha256: ef3489a969683c4f3d0239010cc8b7a2a46543a8d139e111c06c558875083544 url: "https://pub.dev" source: hosted - version: "7.2.2" + version: "9.0.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "251eb156a8b5fa9ce033747d73535bf53911071f8d3b6f4f0b578505ce0d4496" + sha256: "0f9e4418835d1b2c3ae78fdb918251959106cefdbc4dd43526e182f80e82f6d4" url: "https://pub.dev" source: hosted - version: "3.4.0" + version: "4.0.0" shared_preferences: dependency: transitive description: name: shared_preferences - sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02" + sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" + sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.2.3" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" + sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" url: "https://pub.dev" source: hosted - version: "2.3.5" + version: "2.4.0" shared_preferences_linux: dependency: transitive description: @@ -1513,10 +1522,10 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.3.0" shared_preferences_windows: dependency: transitive description: @@ -1630,18 +1639,18 @@ packages: dependency: transitive description: name: sqflite - sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 + sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.3+1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" + sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.4" stack_trace: dependency: transitive description: @@ -1718,34 +1727,34 @@ packages: dependency: "direct dev" description: name: test - sha256: a1f7595805820fcc05e5c52e3a231aedd0b72972cb333e8c738a8b1239448b6f + sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073" url: "https://pub.dev" source: hosted - version: "1.24.9" + version: "1.25.2" test_api: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" test_core: dependency: transitive description: name: test_core - sha256: a757b14fc47507060a162cc2530d9a4a2f92f5100a952c7443b5cad5ef5b106a + sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4" url: "https://pub.dev" source: hosted - version: "0.5.9" + version: "0.6.0" timezone: dependency: transitive description: name: timezone - sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" + sha256: a6ccda4a69a442098b602c44e61a1e2b4bf6f5516e875bbf0f427d5df14745d5 url: "https://pub.dev" source: hosted - version: "0.9.2" + version: "0.9.3" timing: dependency: transitive description: @@ -1782,26 +1791,26 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "0ecc004c62fd3ed36a2ffcbe0dd9700aee63bd7532d0b642a488b1ec310f492e" + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" url: "https://pub.dev" source: hosted - version: "6.2.5" + version: "6.3.0" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745 + sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.3.3" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5" + sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" url: "https://pub.dev" source: hosted - version: "6.2.5" + version: "6.3.0" url_launcher_linux: dependency: transitive description: @@ -1814,10 +1823,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234 + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.0" url_launcher_platform_interface: dependency: transitive description: @@ -1830,10 +1839,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.1" url_launcher_windows: dependency: transitive description: @@ -1846,10 +1855,10 @@ packages: dependency: "direct main" description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "4.4.0" vector_graphics: dependency: transitive description: @@ -1886,26 +1895,26 @@ packages: dependency: "direct main" description: name: video_player - sha256: afc65f4b8bcb2c188f64a591f84fb471f4f2e19fc607c65fd8d2f8fedb3dec23 + sha256: aced48e701e24c02b0b7f881a8819e4937794e46b5a5821005e2bf3b40a324cc url: "https://pub.dev" source: hosted - version: "2.8.3" + version: "2.8.7" video_player_android: dependency: transitive description: name: video_player_android - sha256: "4dd9b8b86d70d65eecf3dcabfcdfbb9c9115d244d022654aba49a00336d540c2" + sha256: "9529001630e42988f755772972d5014d30121610700e8e502278a245939f8fc8" url: "https://pub.dev" source: hosted - version: "2.4.12" + version: "2.5.0" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "309e3962795e761be010869bae65c0b0e45b5230c5cee1bec72197ca7db040ed" + sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c url: "https://pub.dev" source: hosted - version: "2.5.6" + version: "2.6.1" video_player_platform_interface: dependency: transitive description: @@ -1918,10 +1927,10 @@ packages: dependency: transitive description: name: video_player_web - sha256: "34beb3a07d4331a24f7e7b2f75b8e2b103289038e07e65529699a671b6a6e2cb" + sha256: ff4d69a6614b03f055397c27a71c9d3ddea2b2a23d71b2ba0164f59ca32b8fe2 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.3.1" video_thumbnail: dependency: "direct main" description: @@ -1934,50 +1943,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "13.0.0" - wakelock: - dependency: "direct main" - description: - name: wakelock - sha256: "769ecf42eb2d07128407b50cb93d7c10bd2ee48f0276ef0119db1d25cc2f87db" - url: "https://pub.dev" - source: hosted - version: "0.6.2" - wakelock_macos: - dependency: transitive - description: - name: wakelock_macos - sha256: "047c6be2f88cb6b76d02553bca5a3a3b95323b15d30867eca53a19a0a319d4cd" - url: "https://pub.dev" - source: hosted - version: "0.4.0" - wakelock_platform_interface: - dependency: transitive - description: - name: wakelock_platform_interface - sha256: "1f4aeb81fb592b863da83d2d0f7b8196067451e4df91046c26b54a403f9de621" - url: "https://pub.dev" - source: hosted - version: "0.3.0" - wakelock_web: - dependency: transitive - description: - name: wakelock_web - sha256: "1b256b811ee3f0834888efddfe03da8d18d0819317f20f6193e2922b41a501b5" - url: "https://pub.dev" - source: hosted - version: "0.4.0" - wakelock_windows: - dependency: transitive - description: - name: wakelock_windows - sha256: "857f77b3fe6ae82dd045455baa626bc4b93cb9bb6c86bf3f27c182167c3a5567" - url: "https://pub.dev" - source: hosted - version: "0.2.1" + version: "14.2.1" watcher: dependency: transitive description: @@ -1990,18 +1959,18 @@ packages: dependency: transitive description: name: web - sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05" + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" url: "https://pub.dev" source: hosted - version: "0.4.2" + version: "0.5.1" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: "939ab60734a4f8fa95feacb55804fa278de28bdeef38e616dc08e44a84adea23" + sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.5" webdriver: dependency: transitive description: @@ -2022,18 +1991,18 @@ packages: dependency: transitive description: name: webview_flutter - sha256: "25e1b6e839e8cbfbd708abc6f85ed09d1727e24e08e08c6b8590d7c65c9a8932" + sha256: "6869c8786d179f929144b4a1f86e09ac0eddfe475984951ea6c634774c16b522" url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.8.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: f038ee2fae73b509dde1bc9d2c5a50ca92054282de17631a9a3d515883740934 + sha256: f42447ca49523f11d8f70abea55ea211b3cafe172dd7a0e7ac007bb35dd356dc url: "https://pub.dev" source: hosted - version: "3.16.0" + version: "3.16.4" webview_flutter_platform_interface: dependency: transitive description: @@ -2046,26 +2015,26 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: f12f8d8a99784b863e8b85e4a9a5e3cf1839d6803d2c0c3e0533a8f3c5a992a7 + sha256: "7affdf9d680c015b11587181171d3cad8093e449db1f7d9f0f08f4f33d24f9a0" url: "https://pub.dev" source: hosted - version: "3.13.0" + version: "3.13.1" win32: - dependency: "direct overridden" + dependency: transitive description: name: win32 - sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4 + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "5.5.1" win32_registry: dependency: transitive description: name: win32_registry - sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" + sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.3" window_manager: dependency: "direct main" description: @@ -2110,10 +2079,10 @@ packages: dependency: transitive description: name: yaml_edit - sha256: c566f4f804215d84a7a2c377667f546c6033d5b34b4f9e60dfb09d17c4e97826 + sha256: e9c1a3543d2da0db3e90270dbb1e4eebc985ee5e3ffe468d83224472b2194a5f url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" sdks: - dart: ">=3.2.6 <4.0.0" - flutter: ">=3.19.6" + dart: ">=3.4.1 <4.0.0" + flutter: ">=3.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 327c4ff67..20942b49d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,7 +19,6 @@ version: 1.0.0+1 environment: sdk: '>=3.2.3 <4.0.0' - flutter: 3.19.6 dependencies: # SDKs @@ -32,7 +31,7 @@ dependencies: # State management and Data handling provider: ^6.0.5 protobuf: any - uuid: ^3.0.7 + uuid: ^4.4.0 sliver_tools: ^0.2.12 @@ -42,7 +41,7 @@ dependencies: #Loogs and crash reporting catcher_2: ^1.2.4 - sentry_flutter: ^7.18.0 + sentry_flutter: ^8.3.0 badges: ^3.1.1 dotted_border: ^2.0.0+3 @@ -51,16 +50,15 @@ dependencies: pin_code_text_field: ^1.8.0 scrollable_positioned_list: ^0.3.8 infinite_scroll_pagination: ^4.0.0 - wakelock: ^0.6.2 email_validator: ^2.1.17 credit_card_validator: ^2.1.0 flutter_multi_formatter: ^2.12.4 # Media & File handling - audioplayers: ^5.2.1 + audioplayers: ^6.0.0 video_player: ^2.7.0 video_thumbnail: ^0.5.3 - file_picker: ^5.3.3 + file_picker: ^8.0.5 filesize: ^2.0.1 flutter_image_compress: ^2.3.0 @@ -77,10 +75,10 @@ dependencies: flutter_pdfview: ^1.3.1 # Navigation & Localization - auto_route: ^7.8.4 - i18n_extension: ^11.0.12 + auto_route: ^8.2.0 + i18n_extension: ^12.0.1 i18n_extension_importer: ^0.0.6 - intl: ^0.18.1 + intl: ^0.19.0 # QR qr_flutter: ^4.1.0 @@ -91,12 +89,12 @@ dependencies: loader_overlay: ^2.3.0 # Keyboard & Color utilities - flutter_keyboard_visibility: ^5.4.1 + flutter_keyboard_visibility: ^6.0.0 hexcolor: ^3.0.1 # URL & Sharing utilities url_launcher: ^6.2.5 - share_plus: ^7.1.0 + share_plus: ^9.0.0 flutter_inappwebview: ^6.0.0 flutter_windows_webview: git: @@ -110,21 +108,21 @@ dependencies: flutter_dotenv: ^5.1.0 # Notifications & Logging - flutter_local_notifications: ^15.1.0+1 + flutter_local_notifications: ^17.1.2 logger: ^2.0.1 # Error handling - device_info_plus: ^9.0.3 + device_info_plus: ^10.1.0 # flutter_mailer: ^2.0.0 # fluttertoast: ^8.2.2 # Package information - package_info_plus: ^4.1.0 + package_info_plus: ^8.0.0 # Path, permission & Markdown handling path_provider: ^2.1.0 - permission_handler: ^10.4.3 - flutter_markdown: ^0.6.17+1 + permission_handler: ^11.3.1 + flutter_markdown: ^0.7.2+1 # Ads google_mobile_ads: ^5.0.0 @@ -132,17 +130,11 @@ dependencies: # Generate bindings to native libraries ffi: ^2.1.0 # Deeplink handling - app_links: ^3.5.1 + app_links: ^6.1.1 #Loading animated_loading_border: ^0.0.2 shimmer: ^3.0.0 - -# wakelock ^0.6.2 requires win32 ^2.0.0 or ^3.0.0 -# See https://github.com/creativecreatorormaybenot/wakelock/issues/211 -dependency_overrides: - win32: 3.1.4 - dev_dependencies: integration_test: sdk: flutter @@ -150,16 +142,24 @@ dev_dependencies: sdk: flutter flutter_test: sdk: flutter - ffigen: ^11.0.0 - flutter_lints: ^2.0.1 + ffigen: ^12.0.0 + flutter_lints: ^4.0.0 test: ^1.15.7 mockito: ^5.0.12 - auto_route_generator: ^7.3.2 + auto_route_generator: ^8.0.0 build_runner: ^2.0.5 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec +dependency_overrides: + # TODO: Recheck once flutter_inappwebview version >6.0.0 is released + flutter_inappwebview_android: + git: + url: https://github.com/holzgeist/flutter_inappwebview + path: flutter_inappwebview_android + ref: d89b1d32638b49dfc58c4b7c84153be0c269d057 + # The following section is specific to Flutter. flutter: fonts: