From e954dccad948ddd2ebec958e7d35a0549924947c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 8 Feb 2023 17:25:05 +0100 Subject: [PATCH] Convert ScreenshotHolder to an interface for testing purpose. --- .../screenshot/DefaultScreenshotHolder.kt | 46 +++++++++++++++++++ .../rageshake/screenshot/ScreenshotHolder.kt | 28 ++--------- 2 files changed, 51 insertions(+), 23 deletions(-) create mode 100644 features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/DefaultScreenshotHolder.kt diff --git a/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/DefaultScreenshotHolder.kt b/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/DefaultScreenshotHolder.kt new file mode 100644 index 0000000000..53b6291bdb --- /dev/null +++ b/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/DefaultScreenshotHolder.kt @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.features.rageshake.screenshot + +import android.content.Context +import android.graphics.Bitmap +import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.libraries.androidutils.bitmap.writeBitmap +import io.element.android.libraries.androidutils.file.safeDelete +import io.element.android.libraries.di.AppScope +import io.element.android.libraries.di.ApplicationContext +import io.element.android.libraries.di.SingleIn +import java.io.File +import javax.inject.Inject + +@SingleIn(AppScope::class) +@ContributesBinding(AppScope::class) +class DefaultScreenshotHolder @Inject constructor( + @ApplicationContext private val context: Context, +) : ScreenshotHolder { + private val file = File(context.filesDir, "screenshot.png") + + override fun writeBitmap(data: Bitmap) { + file.writeBitmap(data, Bitmap.CompressFormat.PNG, 85) + } + + override fun getFile() = file.takeIf { it.exists() && it.length() > 0 } + + override fun reset() { + file.safeDelete() + } +} diff --git a/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/ScreenshotHolder.kt b/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/ScreenshotHolder.kt index 33674c07fb..c570f0665d 100644 --- a/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/ScreenshotHolder.kt +++ b/features/rageshake/src/main/kotlin/io/element/android/features/rageshake/screenshot/ScreenshotHolder.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 New Vector Ltd + * Copyright (c) 2023 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,29 +16,11 @@ package io.element.android.features.rageshake.screenshot -import android.content.Context import android.graphics.Bitmap -import io.element.android.libraries.androidutils.bitmap.writeBitmap -import io.element.android.libraries.androidutils.file.safeDelete -import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.ApplicationContext -import io.element.android.libraries.di.SingleIn import java.io.File -import javax.inject.Inject -@SingleIn(AppScope::class) -class ScreenshotHolder @Inject constructor( - @ApplicationContext private val context: Context, -) { - private val file = File(context.filesDir, "screenshot.png") - - fun writeBitmap(data: Bitmap) { - file.writeBitmap(data, Bitmap.CompressFormat.PNG, 85) - } - - fun getFile() = file.takeIf { it.exists() && it.length() > 0 } - - fun reset() { - file.safeDelete() - } +interface ScreenshotHolder { + fun writeBitmap(data: Bitmap) + fun getFile(): File? + fun reset() }