feat: feature 多模块骨架
This commit is contained in:
7
feature/auth/build.gradle.kts
Normal file
7
feature/auth/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.auth"
|
||||||
|
}
|
||||||
2
feature/auth/src/main/AndroidManifest.xml
Normal file
2
feature/auth/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.auth
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val AUTH_ROUTE = "auth"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun AuthScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Auth")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.auth
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class AuthViewModel @Inject constructor() : ViewModel()
|
||||||
7
feature/checkin/build.gradle.kts
Normal file
7
feature/checkin/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.checkin"
|
||||||
|
}
|
||||||
2
feature/checkin/src/main/AndroidManifest.xml
Normal file
2
feature/checkin/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.checkin
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val CHECKIN_ROUTE = "checkin"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun CheckinScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Check-in")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.checkin
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class CheckinViewModel @Inject constructor() : ViewModel()
|
||||||
7
feature/course/build.gradle.kts
Normal file
7
feature/course/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.course"
|
||||||
|
}
|
||||||
2
feature/course/src/main/AndroidManifest.xml
Normal file
2
feature/course/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.course
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val COURSE_ROUTE = "course"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun CourseScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Course")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.course
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class CourseViewModel @Inject constructor() : ViewModel()
|
||||||
7
feature/feedback/build.gradle.kts
Normal file
7
feature/feedback/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.feedback"
|
||||||
|
}
|
||||||
2
feature/feedback/src/main/AndroidManifest.xml
Normal file
2
feature/feedback/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.feedback
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val FEEDBACK_ROUTE = "feedback"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun FeedbackScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Feedback")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.feedback
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class FeedbackViewModel @Inject constructor() : ViewModel()
|
||||||
7
feature/plan/build.gradle.kts
Normal file
7
feature/plan/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.plan"
|
||||||
|
}
|
||||||
2
feature/plan/src/main/AndroidManifest.xml
Normal file
2
feature/plan/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.plan
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val PLAN_ROUTE = "plan"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun PlanScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Plan")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.plan
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class PlanViewModel @Inject constructor() : ViewModel()
|
||||||
7
feature/profile/build.gradle.kts
Normal file
7
feature/profile/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.profile"
|
||||||
|
}
|
||||||
2
feature/profile/src/main/AndroidManifest.xml
Normal file
2
feature/profile/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.profile
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val PROFILE_ROUTE = "profile"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ProfileScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Profile")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.profile
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class ProfileViewModel @Inject constructor() : ViewModel()
|
||||||
7
feature/survey/build.gradle.kts
Normal file
7
feature/survey/build.gradle.kts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
plugins {
|
||||||
|
alias(libs.plugins.mcl.android.feature)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.mingyuan.android_client.feature.survey"
|
||||||
|
}
|
||||||
2
feature/survey/src/main/AndroidManifest.xml
Normal file
2
feature/survey/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest />
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.mingyuan.android_client.feature.survey
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
|
||||||
|
/** Navigation route for this feature, referenced by the app-level NavHost. */
|
||||||
|
const val SURVEY_ROUTE = "survey"
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun SurveyScreen(modifier: Modifier = Modifier) {
|
||||||
|
Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
Text(text = "Survey")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.mingyuan.android_client.feature.survey
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class SurveyViewModel @Inject constructor() : ViewModel()
|
||||||
Reference in New Issue
Block a user