diff options
author | Ricki Hirner <hirner@bitfire.at> | 2022-09-27 13:04:53 +0300 |
---|---|---|
committer | Ricki Hirner <hirner@bitfire.at> | 2022-09-27 14:03:08 +0300 |
commit | 2b16cd6365d0773572ef4e37a2d5ff8ac747ce64 (patch) | |
tree | c746037b53da86973f03e6197a914a40fe7f8f6f | |
parent | 8a7f51b7055f9c0878908b716059ea23a3a8c7cf (diff) |
Lint
-rw-r--r-- | app/build.gradle | 5 | ||||
-rw-r--r-- | app/src/androidTest/AndroidManifest.xml | 3 | ||||
-rw-r--r-- | app/src/main/AndroidManifest.xml | 4 | ||||
-rw-r--r-- | app/src/main/java/at/bitfire/davdroid/db/AppDatabase.kt | 2 | ||||
-rw-r--r-- | app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt | 107 | ||||
-rw-r--r-- | app/src/main/java/at/bitfire/davdroid/webdav/DavDocumentsProvider.kt | 12 |
6 files changed, 70 insertions, 63 deletions
diff --git a/app/build.gradle b/app/build.gradle index 47e3f0fe..96427eed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,6 +51,9 @@ android { dataBinding = true } + // Java namespace for our classes (not to be confused with Android package ID) + namespace 'at.bitfire.davdroid' + flavorDimensions "distribution" productFlavors { ose { @@ -158,7 +161,7 @@ dependencies { androidTestImplementation 'androidx.test:rules:1.4.0' androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.3' androidTestImplementation "com.squareup.okhttp3:mockwebserver:${versions.okhttp}" - androidTestImplementation 'io.mockk:mockk-android:1.12.3' + androidTestImplementation 'io.mockk:mockk-android:1.13.1' androidTestImplementation 'junit:junit:4.13.2' testImplementation "com.squareup.okhttp3:mockwebserver:${versions.okhttp}" diff --git a/app/src/androidTest/AndroidManifest.xml b/app/src/androidTest/AndroidManifest.xml index 4e6c7759..986f2f8a 100644 --- a/app/src/androidTest/AndroidManifest.xml +++ b/app/src/androidTest/AndroidManifest.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<manifest package="at.bitfire.davdroid" - xmlns:android="http://schemas.android.com/apk/res/android" +<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:installLocation="internalOnly"> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index da80a629..25664fb8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<manifest package="at.bitfire.davdroid" - xmlns:android="http://schemas.android.com/apk/res/android" +<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:installLocation="internalOnly"> @@ -9,6 +8,7 @@ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.INTERNET"/> + <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/> <uses-permission android:name="android.permission.READ_SYNC_STATS"/> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> diff --git a/app/src/main/java/at/bitfire/davdroid/db/AppDatabase.kt b/app/src/main/java/at/bitfire/davdroid/db/AppDatabase.kt index fc56d4c6..228e684d 100644 --- a/app/src/main/java/at/bitfire/davdroid/db/AppDatabase.kt +++ b/app/src/main/java/at/bitfire/davdroid/db/AppDatabase.kt @@ -251,7 +251,7 @@ abstract class AppDatabase: RoomDatabase() { writer.append("$tableName: ") db.query("SELECT COUNT(*) FROM $tableName").use { cursor -> if (cursor.moveToNext()) - writer.append("${cursor.getInt(0)} row(s), data not listed here\n\n") + writer.append("${cursor.getInt(0)} row(s), data not listed here\n\n") } } else { writer.append("$tableName\n") diff --git a/app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt b/app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt index 8d414c12..48da8442 100644 --- a/app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt +++ b/app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt @@ -507,67 +507,72 @@ class AccountSettings( * convert legacy unknown properties to the current format. */ private fun update_11_12() { - if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) - context.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)?.use { provider -> - // Attention: CalendarProvider does NOT limit the results of the ExtendedProperties query - // to the given account! So all extended properties will be processed number-of-accounts times. - val extUri = ExtendedProperties.CONTENT_URI.asSyncAdapter(account) - - provider.query(extUri, arrayOf( - ExtendedProperties._ID, // idx 0 - ExtendedProperties.NAME, // idx 1 - ExtendedProperties.VALUE // idx 2 - ), null, null, null)?.use { cursor -> - while (cursor.moveToNext()) { - val id = cursor.getLong(0) - val rawValue = cursor.getString(2) - - val uri by lazy { - ContentUris.withAppendedId(ExtendedProperties.CONTENT_URI, id).asSyncAdapter(account) - } - - when (cursor.getString(1)) { - UnknownProperty.CONTENT_ITEM_TYPE -> { - // unknown property; check whether it's a URL - try { - val property = UnknownProperty.fromJsonString(rawValue) - if (property is Url) { // rewrite to MIMETYPE_URL - val newValues = ContentValues(2) - newValues.put(ExtendedProperties.NAME, AndroidEvent.MIMETYPE_URL) - newValues.put(ExtendedProperties.VALUE, property.value) - provider.update(uri, newValues, null, null) - } - } catch (e: Exception) { - Logger.log.log(Level.WARNING, "Couldn't rewrite URL from unknown property to ${AndroidEvent.MIMETYPE_URL}", e) - } + if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) { + val provider = context.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY) + if (provider != null) + try { + // Attention: CalendarProvider does NOT limit the results of the ExtendedProperties query + // to the given account! So all extended properties will be processed number-of-accounts times. + val extUri = ExtendedProperties.CONTENT_URI.asSyncAdapter(account) + + provider.query(extUri, arrayOf( + ExtendedProperties._ID, // idx 0 + ExtendedProperties.NAME, // idx 1 + ExtendedProperties.VALUE // idx 2 + ), null, null, null)?.use { cursor -> + while (cursor.moveToNext()) { + val id = cursor.getLong(0) + val rawValue = cursor.getString(2) + + val uri by lazy { + ContentUris.withAppendedId(ExtendedProperties.CONTENT_URI, id).asSyncAdapter(account) } - "unknown-property" -> { - // unknown property (deprecated format); convert to current format - try { - val stream = ByteArrayInputStream(Base64.decode(rawValue, Base64.NO_WRAP)) - ObjectInputStream(stream).use { - (it.readObject() as? Property)?.let { property -> - // rewrite to current format + + when (cursor.getString(1)) { + UnknownProperty.CONTENT_ITEM_TYPE -> { + // unknown property; check whether it's a URL + try { + val property = UnknownProperty.fromJsonString(rawValue) + if (property is Url) { // rewrite to MIMETYPE_URL val newValues = ContentValues(2) - newValues.put(ExtendedProperties.NAME, UnknownProperty.CONTENT_ITEM_TYPE) - newValues.put(ExtendedProperties.VALUE, UnknownProperty.toJsonString(property)) + newValues.put(ExtendedProperties.NAME, AndroidEvent.MIMETYPE_URL) + newValues.put(ExtendedProperties.VALUE, property.value) provider.update(uri, newValues, null, null) } + } catch (e: Exception) { + Logger.log.log(Level.WARNING, "Couldn't rewrite URL from unknown property to ${AndroidEvent.MIMETYPE_URL}", e) } - } catch(e: Exception) { - Logger.log.log(Level.WARNING, "Couldn't rewrite deprecated unknown property to current format", e) } - } - "unknown-property.v2" -> { - // unknown property (deprecated MIME type); rewrite to current MIME type - val newValues = ContentValues(1) - newValues.put(ExtendedProperties.NAME, UnknownProperty.CONTENT_ITEM_TYPE) - provider.update(uri, newValues, null, null) + "unknown-property" -> { + // unknown property (deprecated format); convert to current format + try { + val stream = ByteArrayInputStream(Base64.decode(rawValue, Base64.NO_WRAP)) + ObjectInputStream(stream).use { + (it.readObject() as? Property)?.let { property -> + // rewrite to current format + val newValues = ContentValues(2) + newValues.put(ExtendedProperties.NAME, UnknownProperty.CONTENT_ITEM_TYPE) + newValues.put(ExtendedProperties.VALUE, UnknownProperty.toJsonString(property)) + provider.update(uri, newValues, null, null) + } + } + } catch(e: Exception) { + Logger.log.log(Level.WARNING, "Couldn't rewrite deprecated unknown property to current format", e) + } + } + "unknown-property.v2" -> { + // unknown property (deprecated MIME type); rewrite to current MIME type + val newValues = ContentValues(1) + newValues.put(ExtendedProperties.NAME, UnknownProperty.CONTENT_ITEM_TYPE) + provider.update(uri, newValues, null, null) + } } } } + } finally { + provider.closeCompat() } - } + } } @Suppress("unused","FunctionName") diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/DavDocumentsProvider.kt b/app/src/main/java/at/bitfire/davdroid/webdav/DavDocumentsProvider.kt index 87b14823..aba454fa 100644 --- a/app/src/main/java/at/bitfire/davdroid/webdav/DavDocumentsProvider.kt +++ b/app/src/main/java/at/bitfire/davdroid/webdav/DavDocumentsProvider.kt @@ -244,7 +244,7 @@ class DavDocumentsProvider: DocumentsProvider() { val parentUrl = parent.toHttpUrl(db) val folder = DavCollection(client.okHttpClient, parentUrl) - folder.propfind(1, *DAV_FILE_FIELDS) { response, relation -> + folder.propfind(1, *DAV_FILE_FIELDS) { response, relation -> Logger.log.fine("$relation $response") val resource: WebDavDocument = @@ -486,11 +486,11 @@ class DavDocumentsProvider: DocumentsProvider() { if (appendNumber != 0) { val extension: String? = MimeTypeMap.getFileExtensionFromUrl(displayName) - if (extension != null) { - val baseName = safeName.removeSuffix(".$extension") - return "${baseName}_$appendNumber.$extension" - } else - return "${safeName}_$appendNumber" + if (extension != null) { + val baseName = safeName.removeSuffix(".$extension") + return "${baseName}_$appendNumber.$extension" + } else + return "${safeName}_$appendNumber" } else return safeName } |