Selaa lähdekoodia

feat: 增加share模块

DoggyZhang 4 kuukautta sitten
vanhempi
sitoutus
b5ad18a353
27 muutettua tiedostoa jossa 253 lisäystä ja 0 poistoa
  1. 1 0
      app/build.gradle
  2. 7 0
      app/src/main/java/com/adealink/weparty/module/share/IShareService.kt
  3. 14 0
      app/src/main/java/com/adealink/weparty/module/share/Router.kt
  4. 23 0
      app/src/main/java/com/adealink/weparty/module/share/ShareModule.kt
  5. 4 0
      app/src/main/java/com/adealink/weparty/module/share/listener/IShareListener.kt
  6. 4 0
      app/src/main/java/com/adealink/weparty/module/share/viewmodel/IShareViewModel.kt
  7. 1 0
      app/src/main/res/values/strings.xml
  8. 1 0
      app/src/main/resources/META-INF/services/com.adealink.frame.router.IRouterInit
  9. 6 0
      gradle/libs.versions.toml
  10. 1 0
      module/share/.gitignore
  11. 58 0
      module/share/build.gradle
  12. 0 0
      module/share/consumer-rules.pro
  13. 21 0
      module/share/proguard-rules.pro
  14. 19 0
      module/share/src/main/AndroidManifest.xml
  15. 20 0
      module/share/src/main/java/com/adealink/weparty/share/ShareServiceImpl.kt
  16. 17 0
      module/share/src/main/java/com/adealink/weparty/share/datasource/local/ShareLocalService.kt
  17. 5 0
      module/share/src/main/java/com/adealink/weparty/share/datasource/remote/ShareHttpService.kt
  18. 9 0
      module/share/src/main/java/com/adealink/weparty/share/viewmodel/ShareViewModel.kt
  19. 21 0
      module/share/src/main/java/com/adealink/weparty/share/viewmodel/ShareViewModelFactory.kt
  20. 3 0
      module/share/src/main/res/values-in/strings.xml
  21. 3 0
      module/share/src/main/res/values-zh/strings.xml
  22. 3 0
      module/share/src/main/res/values/attrs.xml
  23. 3 0
      module/share/src/main/res/values/dimens.xml
  24. 4 0
      module/share/src/main/res/values/ids.xml
  25. 3 0
      module/share/src/main/res/values/strings.xml
  26. 1 0
      module/share/src/main/resources/META-INF/services/com.adealink.weparty.module.share.IShareService
  27. 1 0
      settings.gradle

+ 1 - 0
app/build.gradle

@@ -218,6 +218,7 @@ android {
             ':module:setting',
             ':module:order',
             ':module:wallet',
+            ':module:share',
     ]
     buildFeatures {
         viewBinding true

+ 7 - 0
app/src/main/java/com/adealink/weparty/module/share/IShareService.kt

@@ -0,0 +1,7 @@
+package com.adealink.weparty.module.share
+
+import com.adealink.frame.aab.IService
+
+interface IShareService : IService<IShareService> {
+
+}

+ 14 - 0
app/src/main/java/com/adealink/weparty/module/share/Router.kt

@@ -0,0 +1,14 @@
+package com.adealink.weparty.module.share
+
+
+interface Share {
+
+    interface Common {
+
+        companion object {
+            const val PATH = "/share"
+        }
+
+    }
+
+}

+ 23 - 0
app/src/main/java/com/adealink/weparty/module/share/ShareModule.kt

@@ -0,0 +1,23 @@
+package com.adealink.weparty.module.share
+
+import com.adealink.frame.aab.BaseDynamicModule
+import com.adealink.weparty.R
+
+object ShareModule : BaseDynamicModule<IShareService>(IShareService::class),
+    IShareService {
+
+    override val featureName: String
+        get() = "share"
+
+    override val moduleNameResId: Int
+        get() = R.string.module_share
+
+    override fun emptyService(): IShareService {
+        return object : IShareService {
+
+            override fun getService(): IShareService? {
+                return null
+            }
+        }
+    }
+}

+ 4 - 0
app/src/main/java/com/adealink/weparty/module/share/listener/IShareListener.kt

@@ -0,0 +1,4 @@
+package com.adealink.weparty.module.share.listener
+
+interface IShareListener {
+}

+ 4 - 0
app/src/main/java/com/adealink/weparty/module/share/viewmodel/IShareViewModel.kt

@@ -0,0 +1,4 @@
+package com.adealink.weparty.module.share.viewmodel
+
+interface IShareViewModel {
+}

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -9,6 +9,7 @@
     <string name="module_setting" translatable="false">setting</string>
     <string name="module_order" translatable="false">order</string>
     <string name="module_wallet" translatable="false">wallet</string>
+    <string name="module_share" translatable="false">share</string>
     <string name="common_create">Create</string>
     <string name="common_send">Send</string>
     <string name="common_sending">Sending</string>

+ 1 - 0
app/src/main/resources/META-INF/services/com.adealink.frame.router.IRouterInit

@@ -7,3 +7,4 @@ com.adealink.frame.router.RouterInit_module_activity
 com.adealink.frame.router.RouterInit_module_setting
 com.adealink.frame.router.RouterInit_module_order
 com.adealink.frame.router.RouterInit_module_wallet
+com.adealink.frame.router.RouterInit_module_share

+ 6 - 0
gradle/libs.versions.toml

@@ -178,6 +178,9 @@ tencnetTimpushFcm = "8.5.6864"
 # rong cloud
 rongcloud = "5.24.0"
 
+# zxing
+zxing = "3.3.0"
+
 [libraries]
 # plugin
 android-build-gradle = { module = "com.android.tools.build:gradle", version.ref = "agp" }
@@ -432,6 +435,9 @@ tencent-timpush-fcm = { group = "com.tencent.timpush", name = "fcm", version.ref
 # rongcloud im
 imlib = { group = "cn.rongcloud.sdk", name = "im_lib", version.ref = "rongcloud" }
 
+# zxing
+zxing = { group = "com.google.zxing", name = "android-core", version.ref = "zxing" }
+
 # test
 junit = { group = "junit", name = "junit", version.ref = "junit" }
 androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }

+ 1 - 0
module/share/.gitignore

@@ -0,0 +1 @@
+/build

+ 58 - 0
module/share/build.gradle

@@ -0,0 +1,58 @@
+plugins {
+    id 'com.android.dynamic-feature'
+    id 'org.jetbrains.kotlin.android'
+    id 'org.jetbrains.kotlin.kapt'
+    id 'kotlin-parcelize'
+}
+
+android {
+    namespace 'com.adealink.weparty.share'
+    compileSdk libs.versions.compileSdk.get().toInteger()
+
+    defaultConfig {
+        minSdk libs.versions.minSdk.get().toInteger()
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments += [
+                        "room.schemaLocation"  : "$projectDir/schemas".toString(),
+                        "room.incremental"     : "true",
+                        "room.expandProjection": "true"]
+            }
+        }
+    }
+
+
+
+    buildTypes {
+        release {
+            debuggable false
+        }
+    }
+    viewBinding {
+        enabled = true
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_17
+        targetCompatibility JavaVersion.VERSION_17
+    }
+
+    kotlinOptions {
+        jvmTarget = JavaVersion.VERSION_17.majorVersion
+    }
+}
+
+dependencies {
+    implementation project(":app")
+    //frame
+    kapt libs.frame.router.compiler
+
+    implementation libs.zxing
+
+    //test
+    testImplementation libs.junit
+    androidTestImplementation libs.androidx.junit
+    androidTestImplementation libs.androidx.espresso.core
+}

+ 0 - 0
module/share/consumer-rules.pro


+ 21 - 0
module/share/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 19 - 0
module/share/src/main/AndroidManifest.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:dist="http://schemas.android.com/apk/distribution"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="LockedOrientationActivity">
+
+    <dist:module
+        dist:instant="false"
+        dist:title="@string/module_activity">
+        <dist:fusing dist:include="true" />
+        <dist:delivery>
+            <dist:install-time>
+                <dist:removable dist:value="true" />
+            </dist:install-time>
+        </dist:delivery>
+    </dist:module>
+
+    <application>
+    </application>
+</manifest>

+ 20 - 0
module/share/src/main/java/com/adealink/weparty/share/ShareServiceImpl.kt

@@ -0,0 +1,20 @@
+package com.adealink.weparty.share
+
+import com.adealink.frame.spi.RegisterService
+import com.adealink.weparty.App
+import com.adealink.weparty.module.activity.IActivityService
+import com.adealink.weparty.share.datasource.remote.ShareHttpService
+
+@RegisterService(IActivityService::class)
+class ShareServiceImpl : IActivityService {
+
+    private val shareHttpService by lazy {
+        App.instance.networkService.getHttpService(ShareHttpService::class.java)
+    }
+
+
+    override fun getService(): IActivityService {
+        return this
+    }
+
+}

+ 17 - 0
module/share/src/main/java/com/adealink/weparty/share/datasource/local/ShareLocalService.kt

@@ -0,0 +1,17 @@
+package com.adealink.weparty.share.datasource.local
+
+import android.content.Context
+import com.adealink.frame.storage.sp.TypeDelegationPrefs
+import com.adealink.frame.util.AppUtil
+import com.adealink.weparty.module.profile.ProfileModule
+
+object ShareLocalService : TypeDelegationPrefs(
+    prefs = {
+        AppUtil.appContext.getSharedPreferences("pref_share", Context.MODE_PRIVATE)
+    },
+    userId = {
+        ProfileModule.getMyUid().toString()
+    }
+) {
+
+}

+ 5 - 0
module/share/src/main/java/com/adealink/weparty/share/datasource/remote/ShareHttpService.kt

@@ -0,0 +1,5 @@
+package com.adealink.weparty.share.datasource.remote
+
+interface ShareHttpService {
+
+}

+ 9 - 0
module/share/src/main/java/com/adealink/weparty/share/viewmodel/ShareViewModel.kt

@@ -0,0 +1,9 @@
+package com.adealink.weparty.share.viewmodel
+
+import com.adealink.frame.mvvm.viewmodel.BaseViewModel
+import com.adealink.weparty.module.activity.viewmodel.IActivityViewModel
+import com.adealink.weparty.module.playmate.viewmodel.IPlaymateViewModel
+
+class ShareViewModel : BaseViewModel(), IActivityViewModel {
+
+}

+ 21 - 0
module/share/src/main/java/com/adealink/weparty/share/viewmodel/ShareViewModelFactory.kt

@@ -0,0 +1,21 @@
+package com.adealink.weparty.share.viewmodel
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+@Suppress("UNCHECKED_CAST")
+class ShareViewModelFactory : ViewModelProvider.NewInstanceFactory() {
+
+    override fun <T : ViewModel> create(modelClass: Class<T>): T {
+        return with(modelClass) {
+            when {
+                isAssignableFrom(ShareViewModel::class.java) ->
+                    ShareViewModel()
+
+                else ->
+                    throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
+            } as T
+        }
+    }
+
+}

+ 3 - 0
module/share/src/main/res/values-in/strings.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 3 - 0
module/share/src/main/res/values-zh/strings.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 3 - 0
module/share/src/main/res/values/attrs.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 3 - 0
module/share/src/main/res/values/dimens.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 4 - 0
module/share/src/main/res/values/ids.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+</resources>

+ 3 - 0
module/share/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+</resources>

+ 1 - 0
module/share/src/main/resources/META-INF/services/com.adealink.weparty.module.share.IShareService

@@ -0,0 +1 @@
+com.adealink.weparty.share.ShareServiceImpl

+ 1 - 0
settings.gradle

@@ -99,6 +99,7 @@ include ':module:activity'
 include ':module:setting'
 include ':module:order'
 include ':module:wallet'
+include ':module:share'
 
 //调试frame框架
 include ':frame:network'