@@ -3,6 +3,7 @@ package com.heyanle.easybangumi4
33import android.content.Context
44import androidx.room.migration.Migration
55import androidx.sqlite.db.SupportSQLiteDatabase
6+ import com.heyanle.easybangumi4.base.json.JsonFileProvider
67import com.heyanle.easybangumi4.base.preferences.android.AndroidPreferenceStore
78import com.heyanle.easybangumi4.base.preferences.hekv.HeKVPreferenceStore
89import com.heyanle.easybangumi4.base.preferences.mmkv.MMKVPreferenceStore
@@ -19,7 +20,9 @@ import com.heyanle.easybangumi4.cartoon.old.repository.db.CacheDatabase
1920import com.heyanle.easybangumi4.cartoon.repository.db.CartoonDatabase
2021import com.heyanle.easybangumi4.cartoon.star.CartoonStarController
2122import com.heyanle.easybangumi4.plugin.extension.ExtensionInfo
23+ import com.heyanle.easybangumi4.plugin.extension.loader.ExtensionLoaderFactory
2224import com.heyanle.easybangumi4.plugin.extension.provider.JsExtensionProvider
25+ import com.heyanle.easybangumi4.plugin.extension.provider.JsExtensionProviderV2
2326import com.heyanle.easybangumi4.plugin.js.extension.JSExtensionCryLoader
2427import com.heyanle.easybangumi4.plugin.js.extension.JSExtensionLoader
2528import com.heyanle.easybangumi4.plugin.js.runtime.JSRuntimeProvider
@@ -422,8 +425,43 @@ object Migrate {
422425 jsRuntimeProvider.release()
423426 }
424427
428+
429+ if (lastVersionCode < 101 ) {
430+ val extensionJSPath = context.getFilePath(" extension-js" )
431+ val extensionJsV2Path = context.getFilePath(" extension_v2" )
432+ val folder = File (extensionJSPath)
433+ val extension = arrayListOf<Pair <String , File >>()
434+
435+ val list = folder.listFiles()?.filter {
436+ it.isFile && it.name.endsWith(JsExtensionProviderV2 .EXTENSION_SUFFIX ) || it.name.endsWith(JsExtensionProviderV2 .EXTENSION_CRY_SUFFIX )
437+ } ? : emptyList()
438+ val jsRuntimeProvider = JSRuntimeProvider (1 )
439+ val loaders = ExtensionLoaderFactory .getFileJsExtensionLoaders(list, jsRuntimeProvider)
440+ val res = loaders.mapNotNull {
441+ it.load()?.let {
442+ it.key to it.sourcePath
443+ }
444+ }
445+ val indexItem = arrayListOf<JsExtensionProviderV2 .IndexItem >()
446+ res.forEach {
447+ val targetFile = File (extensionJSPath, " ${it.first} .${if (it.second.endsWith(JsExtensionProviderV2 .EXTENSION_CRY_SUFFIX )) JsExtensionProviderV2 .EXTENSION_CRY_SUFFIX else JsExtensionProviderV2 .EXTENSION_SUFFIX } " )
448+ val realTarget = File (it.second).copyTo(targetFile, true )
449+ indexItem.add(
450+ JsExtensionProviderV2 .IndexItem (
451+ key = it.first,
452+ fileName = realTarget.name,
453+ )
454+ )
455+ }
456+ Inject .get<JsonFileProvider >().extensionIndex.update {
457+ indexItem
458+ }
459+
460+
461+ }
425462 // 在这里添加新的迁移代码
426463
464+
427465 androidPreferenceStore.getInt(" last_version_code" , 0 ).set(curVersionCode)
428466 _isMigrating .update {
429467 false
0 commit comments