mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-03 02:07:42 +01:00
chore: add crash reporting (#129)
* refactor: organize core-utils * feat: add crash report sender
This commit is contained in:
parent
52c980b881
commit
aecf2549fb
@ -4,6 +4,8 @@ plugins {
|
||||
alias(libs.plugins.android.application)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.compose)
|
||||
alias(libs.plugins.crashlytics)
|
||||
alias(libs.plugins.gms)
|
||||
}
|
||||
|
||||
android {
|
||||
|
@ -1,9 +1,9 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.android
|
||||
|
||||
import android.app.Application
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.AppInfo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.CrashReportConfiguration
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.CrashReportWriter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.debug.AppInfo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.debug.CrashReportConfiguration
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.debug.CrashReportWriter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.di.sharedHelperModule
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
|
@ -10,6 +10,8 @@ plugins {
|
||||
alias(libs.plugins.ktorfit).apply(false)
|
||||
alias(libs.plugins.kotlinx.serialization).apply(false)
|
||||
alias(libs.plugins.sqldelight).apply(false)
|
||||
alias(libs.plugins.crashlytics).apply(false)
|
||||
alias(libs.plugins.gms).apply(false)
|
||||
}
|
||||
|
||||
tasks.register("clean", Delete::class) {
|
||||
|
@ -8,7 +8,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.api.service.PrivateMessageS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.api.service.SearchService
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.api.service.SiteService
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.api.service.UserService
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.provideHttpClientEngineFactory
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.network.provideHttpClientEngineFactory
|
||||
import de.jensklingenberg.ktorfit.Ktorfit
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.plugins.HttpTimeout
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.api.provider
|
||||
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.Log
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.debug.Log
|
||||
import io.ktor.client.plugins.logging.Logger
|
||||
|
||||
internal val defaultLogger = object : Logger {
|
||||
|
@ -37,8 +37,8 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
|
||||
data class FloatingActionButtonMenuItem(
|
||||
val icon: ImageVector,
|
||||
|
@ -22,7 +22,7 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
|
@ -54,8 +54,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.CustomI
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getDrawerCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getInboxChatViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -24,7 +24,7 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.ScaledContent
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.prettifyDate
|
||||
|
||||
@Composable
|
||||
internal fun MessageCard(
|
||||
|
@ -43,8 +43,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.PostCardBody
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.ScaledContent
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getCommunityInfoViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getPrettyNumber
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
@ -100,9 +100,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalDp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
|
@ -5,9 +5,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviMode
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.image.ImagePreloadManager
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ZombieModeHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.zombiemode.ZombieModeHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
|
@ -20,8 +20,8 @@ import androidx.compose.ui.unit.toSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalDp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
|
@ -20,7 +20,7 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.shimmerEffect
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.shimmerEffect
|
||||
|
||||
@Composable
|
||||
fun CommentCardPlaceholder(
|
||||
|
@ -22,8 +22,8 @@ import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
|
||||
|
@ -29,9 +29,9 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getPrettyNumber
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
@ -14,8 +14,8 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.data.PostLayout
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PersonMentionModel
|
||||
|
@ -18,7 +18,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.data.PostLayout
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.shimmerEffect
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.shimmerEffect
|
||||
|
||||
@Composable
|
||||
fun InboxCardPlaceholder(
|
||||
|
@ -33,9 +33,9 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
|
||||
|
@ -32,9 +32,9 @@ import androidx.compose.ui.unit.toSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.data.PostLayout
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.looksLikeAnImage
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalPixel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
|
@ -37,9 +37,9 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalDp
|
||||
|
||||
@Composable
|
||||
|
@ -18,8 +18,8 @@ import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -23,7 +23,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.data.PostLayout
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.shimmerEffect
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.shimmerEffect
|
||||
|
||||
@Composable
|
||||
fun PostCardPlaceholder(
|
||||
|
@ -21,8 +21,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.web.WebViewScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
|
||||
@Composable
|
||||
fun PostLinkBanner(
|
||||
|
@ -18,8 +18,8 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.TextRange
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
|
||||
@Composable
|
||||
fun TextFormattingBar(
|
||||
|
@ -32,10 +32,10 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getPrettyNumber
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.prettifyDate
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
@ -64,7 +64,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.modals.RawContentDialog
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getGalleryHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery.getGalleryHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
|
@ -67,10 +67,10 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.selectcommunity.SelectCommunityDialog
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getGalleryHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery.getGalleryHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.shareUrl
|
||||
|
@ -65,8 +65,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.MultiCo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.PlaceholderImage
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getDrawerCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getModalDrawerViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.UserModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.di.getLanguageRepository
|
||||
|
@ -35,8 +35,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.Zoomabl
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getDrawerCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getZoomableImageViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
|
@ -3,10 +3,10 @@ package com.github.diegoberaldin.raccoonforlemmy.core.commonui.image
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.DefaultMviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.DateTime
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.GalleryHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.download
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.DateTime
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery.GalleryHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery.download
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.ShareHelper
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.IO
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
|
@ -50,8 +50,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.selectcommunity.Co
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.getAdditionalLabel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toIcon
|
||||
|
@ -34,8 +34,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCo
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -19,9 +19,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getPrettyDuration
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime.getPrettyDuration
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
import kotlin.time.Duration
|
||||
|
@ -21,8 +21,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.fontFamilyResource
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
@ -21,8 +21,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomSheetHandle
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -19,8 +19,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -19,8 +19,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLanguageName
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
@ -22,8 +22,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toIcon
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toReadableName
|
||||
|
@ -21,8 +21,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -26,8 +26,8 @@ import androidx.compose.ui.text.font.FontFamily
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getCustomTextToolbar
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.getShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -30,8 +30,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toIcon
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toReadableName
|
||||
|
@ -25,8 +25,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.BottomS
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -99,9 +99,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
|
@ -6,8 +6,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
|
@ -73,8 +73,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
|
@ -6,8 +6,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.architecture.MviModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
|
@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.shimmerEffect
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.shimmerEffect
|
||||
|
||||
@Composable
|
||||
fun CommunityItemPlaceholder() {
|
||||
|
@ -41,8 +41,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.Communi
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getSelectCommunityViewModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
|
||||
|
@ -97,9 +97,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.report.CreateRepor
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalDp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
|
@ -7,8 +7,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.image.ImagePreload
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.ShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate.HapticFeedback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
|
@ -23,9 +23,9 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.CustomW
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.rememberWebViewNavigator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getDrawerCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getNavigationCoordinator
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.getShareHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.share.getShareHelper
|
||||
|
||||
class WebViewScreen(
|
||||
private val url: String,
|
||||
|
@ -31,6 +31,7 @@ kotlin {
|
||||
implementation(libs.androidx.activity.compose)
|
||||
implementation(libs.androidx.activity)
|
||||
implementation(libs.ktor.android)
|
||||
implementation(libs.firebase.crashlytics)
|
||||
}
|
||||
}
|
||||
val commonMain by getting {
|
||||
@ -43,6 +44,8 @@ kotlin {
|
||||
|
||||
implementation(libs.koin.core)
|
||||
implementation(libs.ktor.cio)
|
||||
implementation(libs.crashkios)
|
||||
|
||||
implementation(projects.resources)
|
||||
}
|
||||
}
|
||||
|
@ -1,67 +0,0 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Environment
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.CrashReportConfiguration.Companion.PREFERENCES_NAME
|
||||
import org.koin.dsl.module
|
||||
import java.io.File
|
||||
import java.io.FileWriter
|
||||
|
||||
class DefaultCrashReportConfiguration(
|
||||
private val context: Context,
|
||||
) : CrashReportConfiguration {
|
||||
|
||||
companion object {
|
||||
const val KEY = "crashReportEnabled"
|
||||
}
|
||||
|
||||
override fun isEnabled(): Boolean =
|
||||
context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
|
||||
.getBoolean(KEY, false)
|
||||
|
||||
override fun setEnabled(value: Boolean) {
|
||||
context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE).apply {
|
||||
edit().putBoolean(KEY, value).apply()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DefaultCrashReportWriter(
|
||||
private val context: Context,
|
||||
) : CrashReportWriter {
|
||||
|
||||
companion object {
|
||||
const val FILE_NAME = "crash_report.txt"
|
||||
}
|
||||
|
||||
override fun write(reportText: String) {
|
||||
val dir = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)
|
||||
val state = Environment.getExternalStorageState()
|
||||
val logFile = if (Environment.MEDIA_MOUNTED == state) {
|
||||
File(dir, FILE_NAME)
|
||||
} else {
|
||||
File(context.cacheDir, FILE_NAME)
|
||||
}
|
||||
try {
|
||||
val writer = FileWriter(logFile, false)
|
||||
writer.append(reportText)
|
||||
writer.flush()
|
||||
writer.close()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
actual val crashReportModule = module {
|
||||
single<CrashReportConfiguration> {
|
||||
DefaultCrashReportConfiguration(
|
||||
context = get(),
|
||||
)
|
||||
}
|
||||
single<CrashReportWriter> {
|
||||
DefaultCrashReportWriter(
|
||||
context = get(),
|
||||
)
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime
|
||||
|
||||
import java.time.Period
|
||||
import java.time.ZonedDateTime
|
||||
@ -77,4 +77,4 @@ actual object DateTime {
|
||||
private fun getDateFromIso8601Timestamp(string: String): ZonedDateTime {
|
||||
return ZonedDateTime.parse(string)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import org.koin.dsl.module
|
||||
import org.koin.java.KoinJavaComponent.inject
|
||||
|
||||
actual val crashReportModule = module {
|
||||
single<CrashReportConfiguration> {
|
||||
DefaultCrashReportConfiguration(
|
||||
context = get(),
|
||||
)
|
||||
}
|
||||
single<CrashReportWriter> {
|
||||
DefaultCrashReportWriter(
|
||||
context = get(),
|
||||
)
|
||||
}
|
||||
single<CrashReportSender> {
|
||||
DefaultCrashReportSender(
|
||||
context = get(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
actual fun getCrashReportSender(): CrashReportSender {
|
||||
val res: CrashReportSender by inject(CrashReportSender::class.java)
|
||||
return res
|
||||
}
|
||||
|
||||
actual fun getCrashReportConfiguration(): CrashReportConfiguration {
|
||||
val res: CrashReportConfiguration by inject(CrashReportConfiguration::class.java)
|
||||
return res
|
||||
}
|
||||
|
@ -0,0 +1,23 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import android.content.Context
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.debug.CrashReportConfiguration.Companion.PREFERENCES_NAME
|
||||
|
||||
class DefaultCrashReportConfiguration(
|
||||
private val context: Context,
|
||||
) : CrashReportConfiguration {
|
||||
|
||||
companion object {
|
||||
const val KEY = "crashReportEnabled"
|
||||
}
|
||||
|
||||
override fun isEnabled(): Boolean =
|
||||
context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
|
||||
.getBoolean(KEY, false)
|
||||
|
||||
override fun setEnabled(value: Boolean) {
|
||||
context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE).apply {
|
||||
edit().putBoolean(KEY, value).apply()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import android.content.Context
|
||||
import co.touchlab.crashkios.crashlytics.CrashlyticsKotlin
|
||||
import co.touchlab.crashkios.crashlytics.enableCrashlytics
|
||||
import com.google.firebase.FirebaseApp
|
||||
|
||||
class DefaultCrashReportSender(
|
||||
private val context: Context,
|
||||
) : CrashReportSender {
|
||||
|
||||
private var enabled = false
|
||||
|
||||
override fun initialize() {
|
||||
FirebaseApp.initializeApp(context)
|
||||
enableCrashlytics()
|
||||
}
|
||||
|
||||
override fun setEnabled(value: Boolean) {
|
||||
enabled = value
|
||||
}
|
||||
|
||||
override fun sendFatalException(error: Throwable) {
|
||||
if (enabled) {
|
||||
CrashlyticsKotlin.sendFatalException(error)
|
||||
}
|
||||
}
|
||||
|
||||
override fun sendNonFatalException(error: Throwable) {
|
||||
if (enabled) {
|
||||
CrashlyticsKotlin.sendHandledException(error)
|
||||
}
|
||||
}
|
||||
|
||||
override fun log(message: String) {
|
||||
if (enabled) {
|
||||
CrashlyticsKotlin.logMessage(message)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Environment
|
||||
import java.io.File
|
||||
import java.io.FileWriter
|
||||
|
||||
class DefaultCrashReportWriter(
|
||||
private val context: Context,
|
||||
) : CrashReportWriter {
|
||||
|
||||
companion object {
|
||||
const val FILE_NAME = "crash_report.txt"
|
||||
}
|
||||
|
||||
override fun write(reportText: String) {
|
||||
val dir = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS)
|
||||
val state = Environment.getExternalStorageState()
|
||||
val logFile = if (Environment.MEDIA_MOUNTED == state) {
|
||||
File(dir, FILE_NAME)
|
||||
} else {
|
||||
File(context.cacheDir, FILE_NAME)
|
||||
}
|
||||
try {
|
||||
val writer = FileWriter(logFile, false)
|
||||
writer.append(reportText)
|
||||
writer.flush()
|
||||
writer.close()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
actual object Log {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery
|
||||
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.network
|
||||
|
||||
import io.ktor.client.engine.HttpClientEngineFactory
|
||||
import io.ktor.client.engine.android.Android
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.share
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
@ -1,5 +0,0 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
|
||||
object AppInfo {
|
||||
var versionCode = ""
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
|
||||
import org.koin.core.module.Module
|
||||
|
||||
interface CrashReportConfiguration {
|
||||
|
||||
companion object {
|
||||
const val PREFERENCES_NAME = "CrashReportPreferences"
|
||||
}
|
||||
|
||||
fun isEnabled(): Boolean
|
||||
|
||||
fun setEnabled(value: Boolean)
|
||||
}
|
||||
|
||||
interface CrashReportWriter {
|
||||
fun write(reportText: String)
|
||||
}
|
||||
|
||||
expect val crashReportModule: Module
|
@ -5,18 +5,7 @@ import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.call.body
|
||||
import io.ktor.client.request.prepareGet
|
||||
import io.ktor.http.contentLength
|
||||
import io.ktor.utils.io.ByteReadChannel
|
||||
import io.ktor.utils.io.core.isEmpty
|
||||
import io.ktor.utils.io.core.readBytes
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.IO
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlin.math.round
|
||||
import kotlin.time.Duration
|
||||
|
||||
@Composable
|
||||
fun String.toLanguageName() = when (this) {
|
||||
@ -73,71 +62,3 @@ fun Int.getPrettyNumber(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Duration.getPrettyDuration(
|
||||
secondsLabel: String,
|
||||
minutesLabel: String,
|
||||
hoursLabel: String,
|
||||
): String = when {
|
||||
inWholeHours > 0 -> buildString {
|
||||
append(inWholeHours)
|
||||
append(hoursLabel)
|
||||
val remainderMinutes = inWholeMinutes % 60
|
||||
val remainderSeconds = inWholeSeconds % 60
|
||||
if (remainderMinutes > 0 || remainderSeconds > 0) {
|
||||
append(" ")
|
||||
append(remainderMinutes)
|
||||
append(minutesLabel)
|
||||
}
|
||||
if (remainderSeconds > 0) {
|
||||
append(" ")
|
||||
append(remainderSeconds)
|
||||
append(secondsLabel)
|
||||
}
|
||||
}
|
||||
|
||||
inWholeMinutes > 0 -> buildString {
|
||||
append(inWholeMinutes)
|
||||
append(minutesLabel)
|
||||
val remainderSeconds = inWholeSeconds % 60
|
||||
if (remainderSeconds > 0) {
|
||||
append(" ")
|
||||
append(remainderSeconds)
|
||||
append(secondsLabel)
|
||||
}
|
||||
}
|
||||
|
||||
else -> buildString {
|
||||
val rounded = round((inWholeMilliseconds / 1000.0) * 10.0) / 10.0
|
||||
if (rounded % 1 <= 0) {
|
||||
append(rounded.toInt())
|
||||
} else {
|
||||
append(rounded)
|
||||
}
|
||||
append(secondsLabel)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun GalleryHelper.download(url: String): ByteArray = withContext(Dispatchers.IO) {
|
||||
val factory = provideHttpClientEngineFactory()
|
||||
val client = HttpClient(factory)
|
||||
client.prepareGet(url).execute { httpResponse ->
|
||||
val channel: ByteReadChannel = httpResponse.body()
|
||||
var result = byteArrayOf()
|
||||
while (!channel.isClosedForRead) {
|
||||
val packet = channel.readRemaining(4096)
|
||||
while (!packet.isEmpty) {
|
||||
val bytes = packet.readBytes()
|
||||
result += bytes
|
||||
println("Received ${result.size} bytes / ${httpResponse.contentLength()}")
|
||||
}
|
||||
}
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
val String.looksLikeAnImage: Boolean
|
||||
get() {
|
||||
val imageExtensions = listOf(".jpeg", ".jpg", ".png", ".webp")
|
||||
return imageExtensions.any { this.endsWith(it) }
|
||||
}
|
||||
|
@ -1,5 +0,0 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
|
||||
expect object Log {
|
||||
fun d(message: String)
|
||||
}
|
@ -3,4 +3,10 @@ package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
expect object StringUtils {
|
||||
fun String.isValidUrl(): Boolean
|
||||
fun Int.toHexDigit(): String
|
||||
}
|
||||
}
|
||||
|
||||
val String.looksLikeAnImage: Boolean
|
||||
get() {
|
||||
val imageExtensions = listOf(".jpeg", ".jpg", ".png", ".webp")
|
||||
return imageExtensions.any { this.endsWith(it) }
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.compose
|
||||
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.compose
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.compose
|
||||
|
||||
import androidx.compose.animation.core.animateFloat
|
||||
import androidx.compose.animation.core.infiniteRepeatable
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime
|
||||
|
||||
expect object DateTime {
|
||||
fun epochMillis(): Long
|
@ -1,8 +1,10 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR
|
||||
import dev.icerock.moko.resources.compose.stringResource
|
||||
import kotlin.math.round
|
||||
import kotlin.time.Duration
|
||||
|
||||
@Composable
|
||||
fun String.prettifyDate(): String = let {
|
||||
@ -52,4 +54,48 @@ fun String.prettifyDate(): String = let {
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Duration.getPrettyDuration(
|
||||
secondsLabel: String,
|
||||
minutesLabel: String,
|
||||
hoursLabel: String,
|
||||
): String = when {
|
||||
inWholeHours > 0 -> buildString {
|
||||
append(inWholeHours)
|
||||
append(hoursLabel)
|
||||
val remainderMinutes = inWholeMinutes % 60
|
||||
val remainderSeconds = inWholeSeconds % 60
|
||||
if (remainderMinutes > 0 || remainderSeconds > 0) {
|
||||
append(" ")
|
||||
append(remainderMinutes)
|
||||
append(minutesLabel)
|
||||
}
|
||||
if (remainderSeconds > 0) {
|
||||
append(" ")
|
||||
append(remainderSeconds)
|
||||
append(secondsLabel)
|
||||
}
|
||||
}
|
||||
|
||||
inWholeMinutes > 0 -> buildString {
|
||||
append(inWholeMinutes)
|
||||
append(minutesLabel)
|
||||
val remainderSeconds = inWholeSeconds % 60
|
||||
if (remainderSeconds > 0) {
|
||||
append(" ")
|
||||
append(remainderSeconds)
|
||||
append(secondsLabel)
|
||||
}
|
||||
}
|
||||
|
||||
else -> buildString {
|
||||
val rounded = round((inWholeMilliseconds / 1000.0) * 10.0) / 10.0
|
||||
if (rounded % 1 <= 0) {
|
||||
append(rounded.toInt())
|
||||
} else {
|
||||
append(rounded)
|
||||
}
|
||||
append(secondsLabel)
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
object AppInfo {
|
||||
var versionCode = ""
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
interface CrashReportConfiguration {
|
||||
|
||||
companion object {
|
||||
const val PREFERENCES_NAME = "CrashReportPreferences"
|
||||
}
|
||||
|
||||
fun isEnabled(): Boolean
|
||||
|
||||
fun setEnabled(value: Boolean)
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import org.koin.core.module.Module
|
||||
|
||||
expect val crashReportModule: Module
|
||||
|
||||
expect fun getCrashReportSender(): CrashReportSender
|
||||
expect fun getCrashReportConfiguration(): CrashReportConfiguration
|
@ -0,0 +1,9 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
interface CrashReportSender {
|
||||
fun initialize()
|
||||
fun setEnabled(value: Boolean)
|
||||
fun sendFatalException(error: Throwable)
|
||||
fun sendNonFatalException(error: Throwable)
|
||||
fun log(message: String)
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
interface CrashReportWriter {
|
||||
fun write(reportText: String)
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
expect object Log {
|
||||
fun d(message: String)
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.di
|
||||
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.DefaultZombieModeHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.ZombieModeHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.zombiemode.DefaultZombieModeHelper
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.zombiemode.ZombieModeHelper
|
||||
import org.koin.dsl.module
|
||||
|
||||
val utilsModule = module {
|
||||
|
@ -0,0 +1,31 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery
|
||||
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.network.provideHttpClientEngineFactory
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.call.body
|
||||
import io.ktor.client.request.prepareGet
|
||||
import io.ktor.http.contentLength
|
||||
import io.ktor.utils.io.ByteReadChannel
|
||||
import io.ktor.utils.io.core.isEmpty
|
||||
import io.ktor.utils.io.core.readBytes
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.IO
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
suspend fun GalleryHelper.download(url: String): ByteArray = withContext(Dispatchers.IO) {
|
||||
val factory = provideHttpClientEngineFactory()
|
||||
val client = HttpClient(factory)
|
||||
client.prepareGet(url).execute { httpResponse ->
|
||||
val channel: ByteReadChannel = httpResponse.body()
|
||||
var result = byteArrayOf()
|
||||
while (!channel.isClosedForRead) {
|
||||
val packet = channel.readRemaining(4096)
|
||||
while (!packet.isEmpty) {
|
||||
val bytes = packet.readBytes()
|
||||
result += bytes
|
||||
println("Received ${result.size} bytes / ${httpResponse.contentLength()}")
|
||||
}
|
||||
}
|
||||
result
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Stable
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.network
|
||||
|
||||
import io.ktor.client.engine.HttpClientEngineFactory
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.share
|
||||
|
||||
import androidx.compose.runtime.Stable
|
||||
import org.koin.core.module.Module
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate
|
||||
|
||||
import org.koin.core.module.Module
|
||||
|
@ -1,10 +1,9 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.zombiemode
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.isActive
|
||||
@ -12,18 +11,6 @@ import kotlinx.coroutines.launch
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
interface ZombieModeHelper {
|
||||
|
||||
val index: Flow<Int>
|
||||
|
||||
fun start(
|
||||
initialValue: Int = 0,
|
||||
interval: Duration = 2.5.seconds,
|
||||
)
|
||||
|
||||
fun pause()
|
||||
}
|
||||
|
||||
internal class DefaultZombieModeHelper : ZombieModeHelper {
|
||||
private val scope = CoroutineScope(SupervisorJob())
|
||||
override val index = MutableStateFlow(-1)
|
||||
@ -45,4 +32,4 @@ internal class DefaultZombieModeHelper : ZombieModeHelper {
|
||||
job?.cancel()
|
||||
index.value = -1
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.zombiemode
|
||||
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
interface ZombieModeHelper {
|
||||
|
||||
val index: Flow<Int>
|
||||
|
||||
fun start(
|
||||
initialValue: Int = 0,
|
||||
interval: Duration = 2.5.seconds,
|
||||
)
|
||||
|
||||
fun pause()
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.datetime
|
||||
|
||||
import platform.Foundation.NSCalendar
|
||||
import platform.Foundation.NSCalendarIdentifierGregorian
|
||||
@ -94,4 +94,4 @@ actual object DateTime {
|
||||
private fun getDateFromIso8601Timestamp(string: String): NSDate? {
|
||||
return NSISO8601DateFormatter().dateFromString(string)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
||||
import org.koin.dsl.module
|
||||
|
||||
actual val crashReportModule = module {
|
||||
single<CrashReportConfiguration> {
|
||||
DefaultCrashReportConfiguration()
|
||||
}
|
||||
single<CrashReportWriter> {
|
||||
DefaultCrashReportWriter()
|
||||
}
|
||||
single<CrashReportSender> {
|
||||
DefaultCrashReportSender()
|
||||
}
|
||||
}
|
||||
|
||||
actual fun getCrashReportSender(): CrashReportSender = CrashReportDiHelper.crashReportSender
|
||||
actual fun getCrashReportConfiguration(): CrashReportConfiguration =
|
||||
CrashReportDiHelper.crashReportConfiguration
|
||||
|
||||
internal object CrashReportDiHelper : KoinComponent {
|
||||
val crashReportSender: CrashReportSender by inject()
|
||||
val crashReportConfiguration: CrashReportConfiguration by inject()
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import platform.Foundation.NSUserDefaults
|
||||
|
||||
class DefaultCrashReportConfiguration(
|
||||
) : CrashReportConfiguration {
|
||||
|
||||
companion object {
|
||||
const val KEY = "crashReportEnabled"
|
||||
}
|
||||
|
||||
override fun isEnabled(): Boolean =
|
||||
NSUserDefaults.standardUserDefaults.boolForKey(KEY)
|
||||
|
||||
override fun setEnabled(value: Boolean) {
|
||||
NSUserDefaults.standardUserDefaults.setBool(value, KEY)
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import co.touchlab.crashkios.crashlytics.CrashlyticsKotlin
|
||||
import co.touchlab.crashkios.crashlytics.enableCrashlytics
|
||||
import co.touchlab.crashkios.crashlytics.setCrashlyticsUnhandledExceptionHook
|
||||
|
||||
class DefaultCrashReportSender : CrashReportSender {
|
||||
|
||||
private var enabled = false
|
||||
|
||||
override fun initialize() {
|
||||
enableCrashlytics()
|
||||
setCrashlyticsUnhandledExceptionHook()
|
||||
}
|
||||
|
||||
override fun setEnabled(value: Boolean) {
|
||||
enabled = value
|
||||
}
|
||||
|
||||
override fun sendFatalException(error: Throwable) {
|
||||
if (enabled) {
|
||||
CrashlyticsKotlin.sendFatalException(error)
|
||||
}
|
||||
}
|
||||
|
||||
override fun sendNonFatalException(error: Throwable) {
|
||||
if (enabled) {
|
||||
CrashlyticsKotlin.sendHandledException(error)
|
||||
}
|
||||
}
|
||||
|
||||
override fun log(message: String) {
|
||||
if (enabled) {
|
||||
CrashlyticsKotlin.logMessage(message)
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +1,15 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import org.koin.dsl.module
|
||||
import platform.Foundation.NSCachesDirectory
|
||||
import platform.Foundation.NSFileManager
|
||||
import platform.Foundation.NSSearchPathForDirectoriesInDomains
|
||||
import platform.Foundation.NSString
|
||||
import platform.Foundation.NSUTF8StringEncoding
|
||||
import platform.Foundation.NSUserDefaults
|
||||
import platform.Foundation.NSUserDomainMask
|
||||
import platform.Foundation.create
|
||||
import platform.Foundation.dataUsingEncoding
|
||||
import platform.Foundation.stringByAppendingPathComponent
|
||||
|
||||
class DefaultCrashReportConfiguration(
|
||||
) : CrashReportConfiguration {
|
||||
|
||||
companion object {
|
||||
const val KEY = "crashReportEnabled"
|
||||
}
|
||||
|
||||
override fun isEnabled(): Boolean =
|
||||
NSUserDefaults.standardUserDefaults.boolForKey(KEY)
|
||||
|
||||
override fun setEnabled(value: Boolean) {
|
||||
NSUserDefaults.standardUserDefaults.setBool(value, KEY)
|
||||
}
|
||||
}
|
||||
|
||||
class DefaultCrashReportWriter : CrashReportWriter {
|
||||
|
||||
companion object {
|
||||
@ -40,12 +23,3 @@ class DefaultCrashReportWriter : CrashReportWriter {
|
||||
NSFileManager.defaultManager.createFileAtPath(file, data, null)
|
||||
}
|
||||
}
|
||||
|
||||
actual val crashReportModule = module {
|
||||
single<CrashReportConfiguration> {
|
||||
DefaultCrashReportConfiguration()
|
||||
}
|
||||
single<CrashReportWriter> {
|
||||
DefaultCrashReportWriter()
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.debug
|
||||
|
||||
import platform.Foundation.NSLog
|
||||
|
@ -1,6 +1,6 @@
|
||||
@file:OptIn(ExperimentalForeignApi::class)
|
||||
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.gallery
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.SideEffect
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.network
|
||||
|
||||
import io.ktor.client.engine.HttpClientEngineFactory
|
||||
import io.ktor.client.engine.cio.CIO
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.share
|
||||
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.inject
|
@ -1,4 +1,4 @@
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils
|
||||
package com.github.diegoberaldin.raccoonforlemmy.core.utils.vibrate
|
||||
|
||||
import org.koin.dsl.module
|
||||
import platform.UIKit.UIImpactFeedbackGenerator
|
@ -3,7 +3,7 @@ package com.github.diegoberaldin.raccoonforlemmy.domain.identity.usecase
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.data.AccountModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.AccountRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.SettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.Log
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.debug.Log
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.ApiConfigurationRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.AuthRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
|
@ -80,8 +80,8 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.userdetail.UserDet
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.NotificationCenterContractKeys
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotificationCenter
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.ListingType
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user