mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	No plugin loading on bad status
This commit is contained in:
		
							parent
							
								
									a1dd6cc106
								
							
						
					
					
						commit
						2c399e6916
					
				
					 4 changed files with 54 additions and 33 deletions
				
			
		|  | @ -424,9 +424,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | |||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
|         app.initClient(this) | ||||
| 
 | ||||
|         PluginManager.updateAllOnlinePlugins(this) | ||||
|         PluginManager.updateAllOnlinePluginsAndLoadThem(this) | ||||
|         PluginManager.loadAllLocalPlugins(this) | ||||
|         PluginManager.loadAllOnlinePlugins(this) | ||||
| 
 | ||||
| //        ioSafe { | ||||
| //            val plugins = | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ import com.lagradost.cloudstream3.AcraApplication.Companion.setKey | |||
| import com.lagradost.cloudstream3.plugins.RepositoryManager.ONLINE_PLUGINS_FOLDER | ||||
| import com.lagradost.cloudstream3.plugins.RepositoryManager.downloadPluginToFile | ||||
| import com.lagradost.cloudstream3.CommonActivity.showToast | ||||
| import com.lagradost.cloudstream3.utils.Coroutines.ioSafe | ||||
| import com.lagradost.cloudstream3.PROVIDER_STATUS_DOWN | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.apmap | ||||
| import com.lagradost.cloudstream3.plugins.RepositoryManager.getRepoPlugins | ||||
|  | @ -115,40 +115,66 @@ object PluginManager { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     // Helper class for updateAllOnlinePluginsAndLoadThem | ||||
|     private data class OnlinePluginData( | ||||
|         val savedData: PluginData, | ||||
|         val onlineData: Pair<String, SitePlugin>, | ||||
|     ) { | ||||
|         val isOutdated = | ||||
|             onlineData.second.apiVersion != savedData.version || onlineData.second.version == PLUGIN_VERSION_ALWAYS_UPDATE | ||||
|         val isDisabled = onlineData.second.status == PROVIDER_STATUS_DOWN | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Needs to be run before other plugin loading because plugin loading can not be overwritten | ||||
|      * 1. Gets all online data about the downloaded plugins | ||||
|      * 2. If disabled do nothing | ||||
|      * 3. If outdated download and load the plugin | ||||
|      * 4. Else load the plugin normally | ||||
|      **/ | ||||
|     fun updateAllOnlinePlugins(activity: Activity) { | ||||
|     fun updateAllOnlinePluginsAndLoadThem(activity: Activity) { | ||||
|         val urls = getKey<Array<RepositoryData>>(REPOSITORIES_KEY) ?: emptyArray() | ||||
| 
 | ||||
|         val onlinePlugins = urls.toList().apmap { | ||||
|             getRepoPlugins(it.url)?.toList() ?: emptyList() | ||||
|         }.flatten() | ||||
|         }.flatten().distinctBy { it.second.url } | ||||
| 
 | ||||
|         // Iterates over all offline plugins, compares to remote repo and returns the plugins which are outdated | ||||
|         val outdatedPlugins = getPluginsOnline().map { savedData -> | ||||
|             onlinePlugins.filter { onlineData -> savedData.internalName == onlineData.second.internalName } | ||||
|                 .mapNotNull { onlineData -> | ||||
|                     val isOutdated = | ||||
|                         onlineData.second.apiVersion != savedData.version || onlineData.second.version == PLUGIN_VERSION_ALWAYS_UPDATE | ||||
|                     if (isOutdated) savedData to onlineData else null | ||||
|                 .map { onlineData -> | ||||
|                     OnlinePluginData(savedData, onlineData) | ||||
|                 } | ||||
|         }.flatten() | ||||
|         }.flatten().distinctBy { it.onlineData.second.url } | ||||
| 
 | ||||
|         Log.i(TAG, "Outdated plugins: $outdatedPlugins") | ||||
|         Log.i(TAG, "Outdated plugins: ${outdatedPlugins.filter { it.isOutdated }}") | ||||
| 
 | ||||
|         outdatedPlugins.apmap { | ||||
|             downloadAndLoadPlugin( | ||||
|                 activity, | ||||
|                 it.second.second.url, | ||||
|                 it.first.internalName, | ||||
|                 it.second.first | ||||
|             ) | ||||
|             if (it.isDisabled) { | ||||
|                 return@apmap | ||||
|             } else if (it.isOutdated) { | ||||
|                 downloadAndLoadPlugin( | ||||
|                     activity, | ||||
|                     it.onlineData.second.url, | ||||
|                     it.savedData.internalName, | ||||
|                     it.onlineData.first | ||||
|                 ) | ||||
|             } else { | ||||
|                 loadPlugin( | ||||
|                     activity, | ||||
|                     File(it.savedData.filePath), | ||||
|                     it.savedData | ||||
|                 ) | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         Log.i(TAG, "Plugin update done!") | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Use updateAllOnlinePluginsAndLoadThem | ||||
|      * */ | ||||
|     fun loadAllOnlinePlugins(activity: Activity) { | ||||
|         File(activity.filesDir, ONLINE_PLUGINS_FOLDER).listFiles()?.sortedBy { it.name } | ||||
|             ?.apmap { file -> | ||||
|  |  | |||
|  | @ -6,13 +6,8 @@ import android.view.ViewGroup | |||
| import androidx.core.view.isVisible | ||||
| import androidx.recyclerview.widget.DiffUtil | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import com.lagradost.cloudstream3.PROVIDER_STATUS_DOWN | ||||
| import com.lagradost.cloudstream3.R | ||||
| import com.lagradost.cloudstream3.plugins.PluginData | ||||
| import com.lagradost.cloudstream3.plugins.PluginManager | ||||
| import com.lagradost.cloudstream3.plugins.SitePlugin | ||||
| import com.lagradost.cloudstream3.ui.result.ActorAdaptor | ||||
| import com.lagradost.cloudstream3.ui.result.DiffCallback | ||||
| import com.lagradost.cloudstream3.ui.result.UiText | ||||
| import kotlinx.android.synthetic.main.repository_item.view.* | ||||
| 
 | ||||
| 
 | ||||
|  | @ -70,6 +65,9 @@ class PluginAdapter( | |||
|             data: PluginViewData, | ||||
|         ) { | ||||
|             val metadata = data.plugin.second | ||||
|             val alpha = if (metadata.status == PROVIDER_STATUS_DOWN) 0.6f else 1f | ||||
|             itemView.main_text?.alpha = alpha | ||||
|             itemView.sub_text?.alpha = alpha | ||||
| 
 | ||||
|             val drawableInt = if (data.isDownloaded) | ||||
|                 R.drawable.ic_baseline_delete_outline_24 | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:id="@+id/repository_item_root" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="wrap_content" | ||||
|     android:orientation="horizontal" | ||||
|  | @ -28,24 +29,21 @@ | |||
|             tools:text="https://github.com/..." /> | ||||
|     </LinearLayout> | ||||
| 
 | ||||
| 
 | ||||
|     <TextView | ||||
|         android:visibility="gone" | ||||
|         android:layout_gravity="center" | ||||
|         android:gravity="center" | ||||
|         android:id="@+id/nsfw_marker" | ||||
|         style="@style/SearchBox" | ||||
|         android:background="@drawable/sub_bg_color" | ||||
|         android:text="@string/is_adult" /> | ||||
|         android:layout_gravity="center" | ||||
|         android:gravity="center" | ||||
|         android:text="@string/is_adult" | ||||
|         android:visibility="gone" | ||||
|         tools:visibility="visible" /> | ||||
| 
 | ||||
|     <ImageView | ||||
|         android:layout_marginStart="10dp" | ||||
|         android:id="@+id/action_button" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_gravity="center_vertical" | ||||
|         tools:src="@drawable/ic_baseline_add_24"> | ||||
|     </ImageView> | ||||
| 
 | ||||
|         android:layout_marginStart="10dp" | ||||
|         tools:src="@drawable/ic_baseline_add_24" /> | ||||
| 
 | ||||
| </LinearLayout> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue