Remove Google integration
This commit is contained in:
@@ -49,7 +49,6 @@ dependencies {
|
||||
|
||||
implementation(project(":core:base"))
|
||||
implementation(project(":core:ktx"))
|
||||
implementation(project(":libs:g-services"))
|
||||
implementation(project(":libs:nextcloud"))
|
||||
implementation(project(":libs:owncloud"))
|
||||
implementation(project(":core:i18n"))
|
||||
|
||||
@@ -4,7 +4,6 @@ import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.provider.MediaStore
|
||||
import androidx.core.database.getStringOrNull
|
||||
import de.mm20.launcher2.files.providers.GDriveFile
|
||||
import de.mm20.launcher2.files.providers.LocalFile
|
||||
import de.mm20.launcher2.files.providers.NextcloudFile
|
||||
import de.mm20.launcher2.files.providers.OwncloudFile
|
||||
@@ -107,66 +106,6 @@ internal class LocalFileDeserializer(
|
||||
}
|
||||
}
|
||||
|
||||
internal class GDriveFileSerializer : SearchableSerializer {
|
||||
override fun serialize(searchable: SavableSearchable): String {
|
||||
searchable as GDriveFile
|
||||
return jsonObjectOf(
|
||||
"id" to searchable.fileId,
|
||||
"label" to searchable.label,
|
||||
"path" to searchable.path,
|
||||
"mimeType" to searchable.mimeType,
|
||||
"size" to searchable.size,
|
||||
"directory" to searchable.isDirectory,
|
||||
"color" to searchable.directoryColor,
|
||||
"uri" to searchable.viewUri
|
||||
).apply {
|
||||
for ((k, v) in searchable.metaData) {
|
||||
put(
|
||||
when (k) {
|
||||
FileMetaType.Owner -> "owner"
|
||||
FileMetaType.Dimensions -> "dimensions"
|
||||
else -> "other"
|
||||
}, v
|
||||
)
|
||||
}
|
||||
}.toString()
|
||||
}
|
||||
|
||||
override val typePrefix: String
|
||||
get() = "gdrive"
|
||||
}
|
||||
|
||||
internal class GDriveFileDeserializer : SearchableDeserializer {
|
||||
override suspend fun deserialize(serialized: String): SavableSearchable {
|
||||
val json = JSONObject(serialized)
|
||||
val id = json.getString("id")
|
||||
val label = json.getString("label")
|
||||
val path = json.getString("path")
|
||||
val mimeType = json.getString("mimeType")
|
||||
val size = json.getLong("size")
|
||||
val directory = json.getBoolean("directory")
|
||||
val color = json.optString("color")
|
||||
val uri = json.getString("uri")
|
||||
val owner = json.optString("owner")
|
||||
val dimensions = json.optString("dimensions")
|
||||
val metaData = mutableMapOf<FileMetaType, String>()
|
||||
owner.takeIf { it.isNotEmpty() }?.let { metaData[FileMetaType.Owner] = it }
|
||||
dimensions.takeIf { it.isNotEmpty() }
|
||||
?.let { metaData[FileMetaType.Dimensions] = it }
|
||||
return GDriveFile(
|
||||
fileId = id,
|
||||
label = label,
|
||||
path = path,
|
||||
mimeType = mimeType,
|
||||
size = size,
|
||||
directoryColor = color,
|
||||
isDirectory = directory,
|
||||
viewUri = uri,
|
||||
metaData = metaData.toImmutableMap()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal class NextcloudFileSerializer : SearchableSerializer {
|
||||
override fun serialize(searchable: SavableSearchable): String {
|
||||
searchable as NextcloudFile
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.mm20.launcher2.files
|
||||
|
||||
import android.content.Context
|
||||
import de.mm20.launcher2.files.providers.GDriveFileProvider
|
||||
import de.mm20.launcher2.files.providers.LocalFileProvider
|
||||
import de.mm20.launcher2.files.providers.NextcloudFileProvider
|
||||
import de.mm20.launcher2.files.providers.OwncloudFileProvider
|
||||
@@ -64,7 +63,6 @@ internal class FileRepository(
|
||||
permissionsManager
|
||||
) else null
|
||||
|
||||
"gdrive" -> GDriveFileProvider(context)
|
||||
"nextcloud" -> NextcloudFileProvider(nextcloudClient)
|
||||
"owncloud" -> OwncloudFileProvider(owncloudClient)
|
||||
else -> PluginFileProvider(context, it)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package de.mm20.launcher2.files
|
||||
|
||||
import de.mm20.launcher2.files.providers.GDriveFile
|
||||
import de.mm20.launcher2.files.providers.LocalFile
|
||||
import de.mm20.launcher2.files.providers.NextcloudFile
|
||||
import de.mm20.launcher2.files.providers.OwncloudFile
|
||||
@@ -23,7 +22,6 @@ val filesModule = module {
|
||||
factory<SearchableDeserializer>(named(LocalFile.Domain)) { LocalFileDeserializer(androidContext()) }
|
||||
factory<SearchableDeserializer>(named(OwncloudFile.Domain)) { OwncloudFileDeserializer() }
|
||||
factory<SearchableDeserializer>(named(NextcloudFile.Domain)) { NextcloudFileDeserializer() }
|
||||
factory<SearchableDeserializer>(named(GDriveFile.Domain)) { GDriveFileDeserializer() }
|
||||
factory<SearchableDeserializer>(named(PluginFile.Domain)) {
|
||||
PluginFileDeserializer(
|
||||
androidContext(),
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
package de.mm20.launcher2.files.providers
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import de.mm20.launcher2.files.GDriveFileSerializer
|
||||
import de.mm20.launcher2.files.R
|
||||
import de.mm20.launcher2.ktx.tryStartActivity
|
||||
import de.mm20.launcher2.search.File
|
||||
import de.mm20.launcher2.search.FileMetaType
|
||||
import de.mm20.launcher2.search.SearchableSerializer
|
||||
import kotlinx.collections.immutable.ImmutableMap
|
||||
|
||||
internal data class GDriveFile(
|
||||
val fileId: String,
|
||||
override val label: String,
|
||||
override val path: String,
|
||||
override val mimeType: String,
|
||||
override val size: Long,
|
||||
override val isDirectory: Boolean,
|
||||
override val metaData: ImmutableMap<FileMetaType, String>,
|
||||
val directoryColor: String?,
|
||||
val viewUri: String,
|
||||
override val labelOverride: String? = null,
|
||||
) : File {
|
||||
|
||||
override fun overrideLabel(label: String): GDriveFile {
|
||||
return this.copy(labelOverride = label)
|
||||
}
|
||||
|
||||
override val domain: String = Domain
|
||||
|
||||
override val key: String = "$domain://$fileId"
|
||||
|
||||
override val providerIconRes = R.drawable.ic_badge_gdrive
|
||||
|
||||
private fun getLaunchIntent(): Intent {
|
||||
return Intent(Intent.ACTION_VIEW).apply {
|
||||
data = Uri.parse(viewUri)
|
||||
flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
}
|
||||
}
|
||||
|
||||
override fun launch(context: Context, options: Bundle?): Boolean {
|
||||
return context.tryStartActivity(getLaunchIntent(), options)
|
||||
}
|
||||
|
||||
override fun getSerializer(): SearchableSerializer {
|
||||
return GDriveFileSerializer()
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val Domain = "gdrive"
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package de.mm20.launcher2.files.providers
|
||||
|
||||
import android.content.Context
|
||||
import de.mm20.launcher2.files.R
|
||||
import de.mm20.launcher2.gservices.DriveFileMeta
|
||||
import de.mm20.launcher2.gservices.GoogleApiHelper
|
||||
import de.mm20.launcher2.search.File
|
||||
import de.mm20.launcher2.search.FileMetaType
|
||||
import kotlinx.collections.immutable.ImmutableMap
|
||||
import kotlinx.collections.immutable.toImmutableMap
|
||||
|
||||
internal class GDriveFileProvider(
|
||||
private val context: Context
|
||||
) : FileProvider {
|
||||
override suspend fun search(query: String, allowNetwork: Boolean): List<File> {
|
||||
if (query.length < 4 || !allowNetwork) return emptyList()
|
||||
val driveFiles = GoogleApiHelper.getInstance(context).queryGDriveFiles(query)
|
||||
return driveFiles.map {
|
||||
GDriveFile(
|
||||
fileId = it.fileId,
|
||||
label = it.label,
|
||||
size = it.size,
|
||||
mimeType = it.mimeType,
|
||||
isDirectory = it.isDirectory,
|
||||
path = "",
|
||||
directoryColor = it.directoryColor,
|
||||
viewUri = it.viewUri,
|
||||
metaData = getMetadata(it.metadata)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getMetadata(file: DriveFileMeta): ImmutableMap<FileMetaType, String> {
|
||||
val metaData = mutableMapOf<FileMetaType, String>()
|
||||
val owners = file.owners
|
||||
metaData[FileMetaType.Owner] = owners.joinToString(separator = ", ")
|
||||
val width = file.width
|
||||
val height = file.height
|
||||
if (width != null && height != null) metaData[FileMetaType.Dimensions] = "${width}x${height}"
|
||||
return metaData.toImmutableMap()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user