Przeglądaj źródła

added main presenter

sirekanian 3 lat temu
rodzic
commit
52ab3ab44f

+ 0 - 1
app/build.gradle

@@ -49,7 +49,6 @@ android {
 }
 }
 
 
 dependencies {
 dependencies {
-    implementation "androidx.core:core-ktx:1.9.0"
     implementation "androidx.compose.material:material:$composeLibraryVersion"
     implementation "androidx.compose.material:material:$composeLibraryVersion"
     implementation "androidx.activity:activity-compose:1.6.0"
     implementation "androidx.activity:activity-compose:1.6.0"
     implementation "com.google.accompanist:accompanist-pager:0.25.1"
     implementation "com.google.accompanist:accompanist-pager:0.25.1"

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -6,6 +6,7 @@
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.INTERNET" />
 
 
     <application
     <application
+        android:name=".App"
         android:allowBackup="false"
         android:allowBackup="false"
         android:dataExtractionRules="@xml/data_extraction_rules"
         android:dataExtractionRules="@xml/data_extraction_rules"
         android:fullBackupContent="false"
         android:fullBackupContent="false"

+ 11 - 0
app/src/main/java/com/sirekanian/spacetime/App.kt

@@ -0,0 +1,11 @@
+package com.sirekanian.spacetime
+
+import android.app.Application
+import com.sirekanian.spacetime.data.Repository
+import com.sirekanian.spacetime.data.RepositoryImpl
+
+class App : Application() {
+
+    val repository: Repository by lazy { RepositoryImpl() }
+
+}

+ 2 - 19
app/src/main/java/com/sirekanian/spacetime/MainActivity.kt

@@ -3,19 +3,12 @@ package com.sirekanian.spacetime
 import android.os.Bundle
 import android.os.Bundle
 import androidx.activity.ComponentActivity
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
 import androidx.activity.compose.setContent
-import androidx.compose.foundation.layout.WindowInsets
-import androidx.compose.foundation.layout.asPaddingValues
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.systemBars
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.MaterialTheme
 import androidx.compose.material.Surface
 import androidx.compose.material.Surface
-import androidx.compose.runtime.remember
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.Modifier
 import androidx.core.view.WindowCompat
 import androidx.core.view.WindowCompat
 import com.google.accompanist.pager.ExperimentalPagerApi
 import com.google.accompanist.pager.ExperimentalPagerApi
-import com.google.accompanist.pager.HorizontalPager
-import com.sirekanian.spacetime.ui.GalleryPageContent
-import com.sirekanian.spacetime.ui.ImagePageContent
 import com.sirekanian.spacetime.ui.theme.SpacetimeTheme
 import com.sirekanian.spacetime.ui.theme.SpacetimeTheme
 
 
 class MainActivity : ComponentActivity() {
 class MainActivity : ComponentActivity() {
@@ -25,23 +18,13 @@ class MainActivity : ComponentActivity() {
         super.onCreate(savedInstanceState)
         super.onCreate(savedInstanceState)
         WindowCompat.setDecorFitsSystemWindows(window, false)
         WindowCompat.setDecorFitsSystemWindows(window, false)
         setContent {
         setContent {
-            val state = remember { MainState() }
-            val pages = state.getPages()
-            val insets = WindowInsets.systemBars.asPaddingValues()
+            val presenter = rememberMainPresenter()
             SpacetimeTheme {
             SpacetimeTheme {
                 Surface(
                 Surface(
                     modifier = Modifier.fillMaxSize(),
                     modifier = Modifier.fillMaxSize(),
                     color = MaterialTheme.colors.background,
                     color = MaterialTheme.colors.background,
                 ) {
                 ) {
-                    HorizontalPager(
-                        count = pages.size,
-                        key = { pages[it].uuid },
-                    ) { index ->
-                        when (val page = pages[index]) {
-                            is ImagePage -> ImagePageContent(insets, state, page, index)
-                            GalleryPage -> GalleryPageContent(insets, state)
-                        }
-                    }
+                    MainScreen(presenter)
                 }
                 }
             }
             }
         }
         }

+ 25 - 0
app/src/main/java/com/sirekanian/spacetime/MainPresenter.kt

@@ -0,0 +1,25 @@
+package com.sirekanian.spacetime
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.ui.platform.LocalContext
+import com.sirekanian.spacetime.data.Repository
+import com.sirekanian.spacetime.ext.app
+
+@Composable
+fun rememberMainPresenter(): MainPresenter {
+    val context = LocalContext.current
+    return remember { MainPresenterImpl(context.app().repository) }
+}
+
+interface MainPresenter {
+
+    val state: MainState
+
+}
+
+class MainPresenterImpl(private val repository: Repository) : MainPresenter {
+
+    override val state = MainState()
+
+}

+ 27 - 0
app/src/main/java/com/sirekanian/spacetime/MainScreen.kt

@@ -0,0 +1,27 @@
+package com.sirekanian.spacetime
+
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.asPaddingValues
+import androidx.compose.foundation.layout.systemBars
+import androidx.compose.runtime.Composable
+import com.google.accompanist.pager.ExperimentalPagerApi
+import com.google.accompanist.pager.HorizontalPager
+import com.sirekanian.spacetime.ui.GalleryPageContent
+import com.sirekanian.spacetime.ui.ImagePageContent
+
+@Composable
+@ExperimentalPagerApi
+fun MainScreen(presenter: MainPresenter) {
+    val state = presenter.state
+    val pages = state.getPages()
+    val insets = WindowInsets.systemBars.asPaddingValues()
+    HorizontalPager(
+        count = pages.size,
+        key = { pages[it].uuid },
+    ) { index ->
+        when (val page = pages[index]) {
+            is ImagePage -> ImagePageContent(insets, state, page, index)
+            GalleryPage -> GalleryPageContent(insets, state)
+        }
+    }
+}

+ 7 - 0
app/src/main/java/com/sirekanian/spacetime/data/Repository.kt

@@ -0,0 +1,7 @@
+package com.sirekanian.spacetime.data
+
+interface Repository {
+}
+
+class RepositoryImpl : Repository {
+}

+ 7 - 0
app/src/main/java/com/sirekanian/spacetime/ext/Context.kt

@@ -0,0 +1,7 @@
+package com.sirekanian.spacetime.ext
+
+import android.content.Context
+import com.sirekanian.spacetime.App
+
+fun Context.app(): App =
+    applicationContext as App