Skip to content

Commit 91937f1

Browse files
committed
refactor: 将分享游戏日志的逻辑抽离到 MainActivity
1 parent 581f692 commit 91937f1

8 files changed

Lines changed: 297 additions & 231 deletions

File tree

ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/activities/ErrorActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import com.movtery.zalithlauncher.utils.getParcelableSafely
4545
import com.movtery.zalithlauncher.utils.getSerializableSafely
4646
import com.movtery.zalithlauncher.utils.network.openLink
4747
import com.movtery.zalithlauncher.utils.string.throwableToString
48-
import com.movtery.zalithlauncher.viewmodel.CrashLogsUploadViewModel
48+
import com.movtery.zalithlauncher.viewmodel.LogsUploadViewModel
4949
import dagger.hilt.android.AndroidEntryPoint
5050
import kotlinx.parcelize.Parcelize
5151
import java.io.File
@@ -85,7 +85,7 @@ class ErrorActivity : BaseAppCompatActivity(refreshData = false) {
8585
/**
8686
* 游戏崩溃日志上传逻辑管理 ViewModel
8787
*/
88-
private val viewModel: CrashLogsUploadViewModel by viewModels()
88+
private val viewModel: LogsUploadViewModel by viewModels()
8989

9090
override fun onCreate(savedInstanceState: Bundle?) {
9191
super.onCreate(savedInstanceState)

ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/activities/MainActivity.kt

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import androidx.lifecycle.lifecycleScope
4040
import androidx.lifecycle.repeatOnLifecycle
4141
import com.google.android.material.dialog.MaterialAlertDialogBuilder
4242
import com.movtery.zalithlauncher.R
43+
import com.movtery.zalithlauncher.context.COPY_LABEL_LINK
4344
import com.movtery.zalithlauncher.coroutine.Task
4445
import com.movtery.zalithlauncher.coroutine.TaskSystem
4546
import com.movtery.zalithlauncher.game.control.ControlManager
@@ -52,13 +53,18 @@ import com.movtery.zalithlauncher.ui.screens.NestedNavKey
5253
import com.movtery.zalithlauncher.ui.screens.NormalNavKey
5354
import com.movtery.zalithlauncher.ui.screens.content.elements.Background
5455
import com.movtery.zalithlauncher.ui.screens.content.elements.LaunchGameOperation
56+
import com.movtery.zalithlauncher.ui.screens.content.navigateToLogView
5557
import com.movtery.zalithlauncher.ui.screens.main.MainScreen
58+
import com.movtery.zalithlauncher.ui.screens.main.crashlogs.LogShareMenu
59+
import com.movtery.zalithlauncher.ui.screens.main.crashlogs.LogShareMenuOperation
60+
import com.movtery.zalithlauncher.ui.screens.main.crashlogs.ShareLinkOperation
5661
import com.movtery.zalithlauncher.ui.theme.ZalithLauncherTheme
5762
import com.movtery.zalithlauncher.ui.theme.feativals.FestivalEffects
5863
import com.movtery.zalithlauncher.upgrade.TooFrequentOperationException
5964
import com.movtery.zalithlauncher.utils.compareLangTag
6065
import com.movtery.zalithlauncher.utils.copyText
6166
import com.movtery.zalithlauncher.utils.festival.getTodayFestivals
67+
import com.movtery.zalithlauncher.utils.file.shareFile
6268
import com.movtery.zalithlauncher.utils.isChinese
6369
import com.movtery.zalithlauncher.utils.logging.Logger.lInfo
6470
import com.movtery.zalithlauncher.utils.network.openLink
@@ -73,6 +79,8 @@ import com.movtery.zalithlauncher.viewmodel.LaunchGameViewModel
7379
import com.movtery.zalithlauncher.viewmodel.LauncherUpgradeOperation
7480
import com.movtery.zalithlauncher.viewmodel.LauncherUpgradeViewModel
7581
import com.movtery.zalithlauncher.viewmodel.LocalHomePageViewModel
82+
import com.movtery.zalithlauncher.viewmodel.LogShareViewModel
83+
import com.movtery.zalithlauncher.viewmodel.LogsUploadViewModel
7684
import com.movtery.zalithlauncher.viewmodel.ModpackConfirmUseMobileDataOperation
7785
import com.movtery.zalithlauncher.viewmodel.ModpackImportOperation
7886
import com.movtery.zalithlauncher.viewmodel.ModpackImportViewModel
@@ -126,6 +134,16 @@ class MainActivity : BaseAppCompatActivity() {
126134
*/
127135
val homePageViewModel: HomePageViewModel by viewModels()
128136

137+
/**
138+
* 游戏日志分享菜单 ViewModel
139+
*/
140+
private val logShareViewModel: LogShareViewModel by viewModels()
141+
142+
/**
143+
* 游戏日志上传 ViewModel
144+
*/
145+
private val logsUploadViewModel: LogsUploadViewModel by viewModels()
146+
129147
/**
130148
* 是否开启捕获按键模式
131149
*/
@@ -198,6 +216,13 @@ class MainActivity : BaseAppCompatActivity() {
198216
is EventViewModel.Event.Launch.PlaySave -> {
199217
launchGameViewModel.quickPlaySave(event.version, event.saveName)
200218
}
219+
is EventViewModel.Event.LogShare.ShareGameLog -> {
220+
val file = event.logFile
221+
if (file.exists()) {
222+
logsUploadViewModel.check(file)
223+
logShareViewModel.openMenu(file)
224+
}
225+
}
201226
is EventViewModel.Event.HomePage.Reload -> {
202227
homePageViewModel.reloadPage(true)
203228
}
@@ -345,6 +370,48 @@ class MainActivity : BaseAppCompatActivity() {
345370
}
346371
)
347372

373+
//游戏日志分享菜单
374+
val logFile = logShareViewModel.currentLogFile
375+
if (logShareViewModel.showMenu && logFile != null) {
376+
LogShareMenu(
377+
operation = LogShareMenuOperation.ShowMenu,
378+
onChange = { operation ->
379+
if (operation == LogShareMenuOperation.None) {
380+
logShareViewModel.closeMenu()
381+
}
382+
},
383+
onView = {
384+
screenBackStackModel.mainScreen.backStack.navigateToLogView(
385+
logPath = logFile.absolutePath
386+
)
387+
logShareViewModel.closeMenu()
388+
},
389+
onShare = {
390+
shareFile(this@MainActivity, logFile)
391+
logShareViewModel.closeMenu()
392+
},
393+
canUpload = logsUploadViewModel.canUpload,
394+
onUpload = {
395+
logsUploadViewModel.operation = ShareLinkOperation.Tip
396+
logShareViewModel.closeMenu()
397+
}
398+
)
399+
}
400+
401+
ShareLinkOperation(
402+
operation = logsUploadViewModel.operation,
403+
onChange = { logsUploadViewModel.operation = it },
404+
onUploadChancel = { logsUploadViewModel.cancel() },
405+
onUpload = {
406+
logFile?.let { file ->
407+
logsUploadViewModel.upload(file) { link ->
408+
openLink(link)
409+
copyText(COPY_LABEL_LINK, link, this@MainActivity)
410+
}
411+
}
412+
}
413+
)
414+
348415
//检查更新操作流程
349416
LauncherUpgradeOperation(
350417
operation = launcherUpgradeViewModel.operation,

ZalithLauncher/src/main/java/com/movtery/zalithlauncher/ui/screens/content/VersionSettingsScreen.kt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -396,17 +396,8 @@ private fun NavigationUI(
396396
versionsScreenKey = versionsScreenKey,
397397
backToMainScreen = backToMainScreen,
398398
onExport = onExport,
399-
onViewLog = { logFile ->
400-
backScreenViewModel.mainScreen.backStack.navigateToLogView(
401-
logPath = logFile.absolutePath
402-
)
403-
},
404-
onLink = { link ->
405-
eventViewModel.sendEvent(
406-
EventViewModel.Event.OpenLink(link)
407-
)
408-
},
409399
version = version,
400+
eventViewModel = eventViewModel,
410401
submitError = submitError
411402
)
412403
}

0 commit comments

Comments
 (0)