Skip to content

Commit 070ec70

Browse files
shit
1 parent 83fc6fb commit 070ec70

File tree

146 files changed

+1089
-1319
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+1089
-1319
lines changed

androidApp/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ plugins {
1010
alias(libs.plugins.android.kotlin)
1111
alias(libs.plugins.kotlin.ksp)
1212
alias(libs.plugins.kotlin.serialization)
13+
alias(libs.plugins.compose)
1314
alias(libs.plugins.compose.compiler)
1415
alias(libs.plugins.room)
1516
}
@@ -166,6 +167,7 @@ dependencies {
166167
implementation(libs.androidx.adaptive)
167168
implementation(libs.androidx.adaptive.layout)
168169
implementation(libs.androidx.adaptive.navigation)
170+
implementation(compose.components.resources)
169171

170172
// Markdown
171173
implementation(libs.markwon.core)

androidApp/mobile/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
<application
55
android:allowBackup="true"
66
android:icon="@mipmap/ic_launcher"
7-
android:label="@string/app_name"
7+
android:label="app_name"
88
android:roundIcon="@mipmap/ic_launcher_round"
99
android:supportsRtl="true"
1010
android:theme="@style/Theme.Awery">
1111
<activity
1212
android:name=".MainActivity"
1313
android:exported="true"
14-
android:label="@string/app_name"
14+
android:label="app_name"
1515
android:theme="@style/Theme.Awery">
1616
<intent-filter>
1717
<action android:name="android.intent.action.MAIN" />

androidApp/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@
153153
tools:ignore="DiscouragedApi" />
154154

155155
<activity
156-
android:name=".ui.mobile.screens.catalog.MainActivity"
156+
android:name=".MainActivity"
157157
android:windowSoftInputMode="adjustPan"
158158
android:exported="false" />
159159

androidApp/src/main/java/com/mrboomdev/awery/ui/mobile/screens/catalog/MainActivity.kt renamed to androidApp/src/main/java/com/mrboomdev/awery/MainActivity.kt

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.mrboomdev.awery.ui.mobile.screens.catalog
1+
package com.mrboomdev.awery
22

33
import android.content.Intent
44
import android.os.Bundle
@@ -14,7 +14,6 @@ import androidx.lifecycle.lifecycleScope
1414
import androidx.viewpager2.adapter.FragmentStateAdapter
1515
import com.google.android.material.elevation.SurfaceColors
1616
import com.google.android.material.navigationrail.NavigationRailView
17-
import com.mrboomdev.awery.R
1817
import com.mrboomdev.awery.app.App.Companion.database
1918
import com.mrboomdev.awery.app.App.Companion.getMoshi
2019
import com.mrboomdev.awery.app.App.Companion.isLandscape
@@ -29,7 +28,9 @@ import com.mrboomdev.awery.data.settings.SettingsList
2928
import com.mrboomdev.awery.databinding.LayoutHeaderHomeBinding
3029
import com.mrboomdev.awery.databinding.ScreenMainBinding
3130
import com.mrboomdev.awery.generated.AwerySettings
32-
import com.mrboomdev.awery.platform.PlatformResources.i18n
31+
import com.mrboomdev.awery.generated.Res
32+
import com.mrboomdev.awery.generated.back_to_exit
33+
import com.mrboomdev.awery.platform.i18n
3334
import com.mrboomdev.awery.ui.mobile.components.EmptyStateView
3435
import com.mrboomdev.awery.ui.mobile.screens.catalog.feeds.FeedsFragment
3536
import com.mrboomdev.awery.ui.mobile.screens.search.MultiSearchActivity
@@ -38,15 +39,12 @@ import com.mrboomdev.awery.ui.mobile.screens.settings.SettingsActivity2
3839
import com.mrboomdev.awery.util.IconStateful
3940
import com.mrboomdev.awery.util.TabsTemplate
4041
import com.mrboomdev.awery.util.extensions.UI_INSETS
41-
import com.mrboomdev.awery.util.extensions.addOnBackPressedListener
4242
import com.mrboomdev.awery.util.extensions.applyInsets
4343
import com.mrboomdev.awery.util.extensions.bottomMargin
4444
import com.mrboomdev.awery.util.extensions.bottomPadding
4545
import com.mrboomdev.awery.util.extensions.dpPx
4646
import com.mrboomdev.awery.util.extensions.enableEdgeToEdge
47-
import com.mrboomdev.awery.util.extensions.inflater
4847
import com.mrboomdev.awery.util.extensions.leftPadding
49-
import com.mrboomdev.awery.util.extensions.removeOnBackPressedListener
5048
import com.mrboomdev.awery.util.extensions.resolveAttrColor
5149
import com.mrboomdev.awery.util.extensions.rightPadding
5250
import com.mrboomdev.awery.util.extensions.setContentViewCompat
@@ -55,7 +53,12 @@ import com.mrboomdev.awery.util.extensions.startActivity
5553
import com.mrboomdev.awery.util.extensions.topPadding
5654
import com.mrboomdev.awery.util.io.FileUtil.readAssets
5755
import com.mrboomdev.awery.util.ui.FadeTransformer
56+
import com.mrboomdev.awery.utils.addOnBackPressedListener
57+
import com.mrboomdev.awery.utils.buildIntent
5858
import com.mrboomdev.awery.utils.div
59+
import com.mrboomdev.awery.utils.dpPx
60+
import com.mrboomdev.awery.utils.inflater
61+
import com.mrboomdev.awery.utils.removeOnBackPressedListener
5962
import com.squareup.moshi.adapter
6063
import kotlinx.coroutines.CoroutineExceptionHandler
6164
import kotlinx.coroutines.Dispatchers
@@ -82,7 +85,7 @@ class MainActivity : AppCompatActivity() {
8285
}
8386

8487
doubleBackToExitPressedOnce = true
85-
toast(R.string.back_to_exit)
88+
toast(Res.string.back_to_exit)
8689
runDelayed({ doubleBackToExitPressedOnce = false }, 2000)
8790
}
8891
}
@@ -95,7 +98,7 @@ class MainActivity : AppCompatActivity() {
9598
if(savedInstanceState != null) {
9699
tabIndex = savedInstanceState.getInt(SAVED_TAB_INDEX, -1)
97100
}
98-
101+
99102
AwerySettings.TABS_TEMPLATE.value.also {
100103
if(it == "custom") loadCustomTabs() else loadTemplateTabs(it)
101104
}
@@ -173,7 +176,7 @@ class MainActivity : AppCompatActivity() {
173176
val tab = tabs[i]
174177
val icon = icons[tab.icon]
175178

176-
val drawable = icon?.getDrawable(this)
179+
val drawable = icon?.getDrawable(this)
177180
?: ContextCompat.getDrawable(this, R.drawable.ic_view_cozy)!!
178181

179182
if(tabIndex == -1 && tab.id == savedDefaultTab) {
@@ -201,7 +204,7 @@ class MainActivity : AppCompatActivity() {
201204
"No tabs found",
202205
"Please selecting an template or either create your own tabs to see anything here.",
203206
"Go to settings"
204-
) { startActivity(clazz = SettingsActivity::class) }
207+
) { startActivity(buildIntent(SettingsActivity::class)) }
205208

206209
setContentViewCompat(binding.root)
207210
}
@@ -404,9 +407,9 @@ class MainActivity : AppCompatActivity() {
404407
override fun getFilters() = SettingsList()
405408
override fun getMaxLoadsAtSameTime() = 1
406409
override fun loadOnStartup() = true
407-
408-
override fun getCacheFile() = requireContext().cacheDir /
409-
Constants.DIRECTORY_NET_CACHE /
410+
411+
override fun getCacheFile() = requireContext().cacheDir /
412+
Constants.DIRECTORY_NET_CACHE /
410413
Constants.FILE_FEEDS_NET_CACHE
411414
}
412415
}

androidApp/src/main/java/com/mrboomdev/awery/app/App.kt

Lines changed: 22 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,16 @@ import com.mrboomdev.awery.data.Constants
6363
import com.mrboomdev.awery.data.db.AweryDB
6464
import com.mrboomdev.awery.data.db.item.DBCatalogList
6565
import com.mrboomdev.awery.extensions.data.CatalogList
66-
import com.mrboomdev.awery.generated.AwerySettings
67-
import com.mrboomdev.awery.generated.GeneratedSetting
68-
import com.mrboomdev.awery.platform.PlatformResources
66+
import com.mrboomdev.awery.generated.*
67+
import com.mrboomdev.awery.platform.i18n
6968
import com.mrboomdev.awery.ui.mobile.screens.BrowserActivity
7069
import com.mrboomdev.awery.ui.mobile.screens.IntentHandlerActivity
7170
import com.mrboomdev.awery.ui.mobile.screens.settings.SettingsActivity
7271
import com.mrboomdev.awery.ui.tv.TvExperimentsActivity
73-
import com.mrboomdev.awery.util.extensions.configuration
74-
import com.mrboomdev.awery.util.extensions.startActivity
7572
import com.mrboomdev.awery.util.ui.dialog.DialogBuilder
7673
import com.mrboomdev.awery.util.ui.markdown.LinkifyPlugin
7774
import com.mrboomdev.awery.util.ui.markdown.SpoilerPlugin
75+
import com.mrboomdev.awery.utils.buildIntent
7876
import com.squareup.moshi.Moshi
7977
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
8078
import dev.mihon.injekt.patchInjekt
@@ -88,6 +86,8 @@ import kotlinx.coroutines.DelicateCoroutinesApi
8886
import kotlinx.coroutines.Dispatchers
8987
import kotlinx.coroutines.GlobalScope
9088
import kotlinx.coroutines.launch
89+
import org.jetbrains.compose.resources.StringResource
90+
import org.jetbrains.compose.resources.stringResource
9191
import java.util.WeakHashMap
9292

9393
class App : Application() {
@@ -130,16 +130,16 @@ class App : Application() {
130130
if(AwerySettings.USE_DARK_THEME.value == null) {
131131
AwerySettings.USE_DARK_THEME.value = ThemeManager.isDarkModeEnabled
132132
}
133-
133+
134134
if(AwerySettings.LAST_OPENED_VERSION.value < 1) {
135135
CoroutineScope(Dispatchers.IO).launch {
136136
database.listDao.insert(
137-
DBCatalogList.fromCatalogList(CatalogList(getString(R.string.currently_watching), "1")),
138-
DBCatalogList.fromCatalogList(CatalogList(getString(R.string.planning_watch), "2")),
139-
DBCatalogList.fromCatalogList(CatalogList(getString(R.string.delayed), "3")),
140-
DBCatalogList.fromCatalogList(CatalogList(getString(R.string.completed), "4")),
141-
DBCatalogList.fromCatalogList(CatalogList(getString(R.string.dropped), "5")),
142-
DBCatalogList.fromCatalogList(CatalogList(getString(R.string.favourites), "6")),
137+
DBCatalogList.fromCatalogList(CatalogList(i18n(Res.string.currently_watching), "1")),
138+
DBCatalogList.fromCatalogList(CatalogList(i18n(Res.string.planning_watch), "2")),
139+
DBCatalogList.fromCatalogList(CatalogList(i18n(Res.string.delayed), "3")),
140+
DBCatalogList.fromCatalogList(CatalogList(i18n(Res.string.completed), "4")),
141+
DBCatalogList.fromCatalogList(CatalogList(i18n(Res.string.dropped), "5")),
142+
DBCatalogList.fromCatalogList(CatalogList(i18n(Res.string.favourites), "6")),
143143
DBCatalogList.fromCatalogList(CatalogList("Hidden", Constants.CATALOG_LIST_BLACKLIST)),
144144
DBCatalogList.fromCatalogList(CatalogList("History", Constants.CATALOG_LIST_HISTORY))
145145
)
@@ -244,7 +244,7 @@ class App : Application() {
244244
// Android 13 and higher shows a visual confirmation of copied contents
245245
// https://developer.android.com/about/versions/13/features/copy-paste
246246
if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) {
247-
toast(R.string.copied_to_clipboard)
247+
toast(i18n(Res.string.copied_to_clipboard))
248248
}
249249
}
250250

@@ -257,6 +257,7 @@ class App : Application() {
257257
}
258258

259259
@JvmStatic
260+
@Deprecated("Old java shit")
260261
fun getResourceId(type: Class<*>, res: String?): Int {
261262
if(res == null) return 0
262263

@@ -280,33 +281,6 @@ class App : Application() {
280281
}
281282
}
282283

283-
inline fun <reified T> getResourceId(res: String?): Int {
284-
return getResourceId(T::class.java, res)
285-
}
286-
287-
@JvmStatic
288-
@Deprecated("old shit", ReplaceWith(
289-
"PlatformResources.i18n(string, *args)",
290-
"com.mrboomdev.awery.platform.PlatformResources"))
291-
fun i18n(clazz: Class<*>, string: String?, vararg args: Any): String? {
292-
val id = getResourceId(clazz, string)
293-
return if(id == 0) null else PlatformResources.i18n(id, *args)
294-
}
295-
296-
@Deprecated("old shit", ReplaceWith(
297-
"PlatformResources.i18n(resourceId, *args)",
298-
"com.mrboomdev.awery.platform.PlatformResources"))
299-
inline fun <reified T> i18n(resourceId: String, vararg args: Any): String? {
300-
return PlatformResources.i18n(resourceId, *args)
301-
}
302-
303-
@JvmStatic
304-
@Deprecated("old shit", ReplaceWith(
305-
"PlatformResources.i18n(res, *params)",
306-
"com.mrboomdev.awery.platform.PlatformResources"))
307-
fun i18n(@StringRes res: Int, vararg params: Any) =
308-
ContextCompat.getContextForLanguage(appContext).getString(res, *params)
309-
310284
private fun toastImpl(context: Context?, text: Any?, duration: Int = 0) {
311285
runOnUiThread { Toast.makeText(context, text.toString(), duration).show() }
312286
}
@@ -317,12 +291,6 @@ class App : Application() {
317291
toastImpl(appContext, text, duration)
318292
}
319293

320-
@JvmStatic
321-
@JvmOverloads
322-
fun toast(@StringRes res: Int, duration: Int = 0) {
323-
toast(appContext.getString(res), duration)
324-
}
325-
326294
/**
327295
* There is a bug in an appcompat library which sometimes throws an [NullPointerException].
328296
* This method tries to do it without throwing any exceptions.
@@ -415,7 +383,7 @@ class App : Application() {
415383

416384
@JvmStatic
417385
fun isLandscape(context: Context): Boolean {
418-
return context.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
386+
return context.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
419387
}
420388

421389
@JvmStatic
@@ -435,10 +403,10 @@ class App : Application() {
435403

436404
@JvmStatic
437405
@JvmOverloads
438-
fun openUrl(context: Context, url: String, forceInternal: Boolean = false) {
406+
fun openUrl(context: Context, url: String, forceInternal: Boolean = false) = with(context) {
439407
if(forceInternal) {
440-
context.startActivity(BrowserActivity::class, BrowserActivity.Extras(url))
441-
return
408+
startActivity(buildIntent(BrowserActivity::class, BrowserActivity.Extras(url)))
409+
return@with
442410
}
443411

444412
val customTabsIntent = CustomTabsIntent.Builder().apply {
@@ -449,11 +417,11 @@ class App : Application() {
449417
intent.data = Uri.parse(url)
450418
}
451419

452-
customTabsIntent.intent.resolveActivity(context.packageManager)?.also {
453-
context.startActivity(customTabsIntent.intent, customTabsIntent.startAnimationBundle)
420+
customTabsIntent.intent.resolveActivity(packageManager)?.also {
421+
startActivity(customTabsIntent.intent, customTabsIntent.startAnimationBundle)
454422
} ?: run {
455423
Log.e(TAG, "No external browser was found, launching a internal one.")
456-
context.startActivity(BrowserActivity::class, BrowserActivity.Extras(url))
424+
startActivity(buildIntent(BrowserActivity::class, BrowserActivity.Extras(url)))
457425
}
458426
}
459427

@@ -487,7 +455,7 @@ class App : Application() {
487455
runOnUiThread { DialogBuilder(getAnyActivity<AppCompatActivity>()!!)
488456
.setTitle("StrictMode.VmPolicy Violation!")
489457
.setMessage(Log.getStackTraceString(violation))
490-
.setPositiveButton(R.string.ok) { it.dismiss() }
458+
.setPositiveButton(i18n(Res.string.ok)) { it.dismiss() }
491459
.show() }
492460
} catch(e: Throwable) {
493461
Log.e(TAG, "Failed to warn about an strict mode violation!", e)
@@ -507,26 +475,6 @@ class App : Application() {
507475
if(isTv) AwerySettings.NavigationStyleValue.MATERIAL else it
508476
}
509477

510-
@Deprecated(message = "java shit")
511-
fun getConfiguration(context: Context): Configuration {
512-
return context.configuration
513-
}
514-
515-
val configuration: Configuration
516-
get() = anyContext.configuration
517-
518-
@JvmStatic
519-
@JvmOverloads
520-
fun snackbar(
521-
activity: Activity,
522-
@StringRes title: Int,
523-
@StringRes button: Int,
524-
buttonCallback: Runnable?,
525-
duration: Int = Snackbar.LENGTH_SHORT
526-
) {
527-
snackbar(activity, activity.getString(title), activity.getString(button), buttonCallback, duration)
528-
}
529-
530478
@JvmStatic
531479
fun snackbar(activity: Activity, title: Any?, button: Any?, buttonCallback: Runnable?, duration: Int) {
532480
runOnUiThread {

0 commit comments

Comments
 (0)