Skip to content

Commit 8df9aa5

Browse files
committed
refactor: extract 'Context.unregisterReceiverSilently' to :common:android
Removes a dependency on com.ichi2.anki.utils.ext from widget config activities, helping break circular dependencies for feature module extraction
1 parent 9e745d6 commit 8df9aa5

4 files changed

Lines changed: 37 additions & 19 deletions

File tree

AnkiDroid/src/main/java/com/ichi2/anki/utils/ext/Context.kt

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package com.ichi2.anki.utils.ext
1717

18-
import android.content.BroadcastReceiver
1918
import android.content.Context
2019
import android.content.res.TypedArray
2120
import android.graphics.Bitmap
@@ -24,7 +23,6 @@ import android.util.AttributeSet
2423
import androidx.annotation.AttrRes
2524
import androidx.annotation.StyleRes
2625
import com.ichi2.anki.CollectionHelper
27-
import timber.log.Timber
2826
import java.io.File
2927
import kotlin.contracts.ExperimentalContracts
3028
import kotlin.contracts.InvocationKind
@@ -51,21 +49,6 @@ inline fun <T> Context.usingStyledAttributes(
5149
return typedArray.block().also { typedArray.recycle() }
5250
}
5351

54-
/**
55-
* Unregisters a [BroadcastReceiver] from [Context] without throwing an [IllegalArgumentException]
56-
* if the receiver wasn't registered.
57-
*
58-
* @param receiver [BroadcastReceiver] to unregister
59-
* @see Context.unregisterReceiver
60-
*/
61-
fun Context.unregisterReceiverSilently(receiver: BroadcastReceiver) {
62-
try {
63-
unregisterReceiver(receiver)
64-
} catch (e: IllegalArgumentException) {
65-
Timber.d(e, "BroadcastReceiver was not previously registered")
66-
}
67-
}
68-
6952
/**
7053
* Encapsulates the dimensions of a [Bitmap].
7154
* Note: width and height might be set to -1 if there are errors when decoding the file.

AnkiDroid/src/main/java/com/ichi2/widget/cardanalysis/CardAnalysisWidgetConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ import androidx.core.os.BundleCompat
2626
import com.ichi2.anki.AnkiActivity
2727
import com.ichi2.anki.R
2828
import com.ichi2.anki.android.AnkiBroadcastReceiver
29+
import com.ichi2.anki.common.utils.ext.unregisterReceiverSilently
2930
import com.ichi2.anki.databinding.ActivityCardAnalysisWidgetConfigBinding
3031
import com.ichi2.anki.dialogs.DeckSelectionDialog
3132
import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener
3233
import com.ichi2.anki.isCollectionEmpty
3334
import com.ichi2.anki.launchCatchingTask
3435
import com.ichi2.anki.model.SelectableDeck
3536
import com.ichi2.anki.showThemedToast
36-
import com.ichi2.anki.utils.ext.unregisterReceiverSilently
3737
import com.ichi2.anki.withProgress
3838
import com.ichi2.widget.AppWidgetId.Companion.INVALID_APPWIDGET_ID
3939
import com.ichi2.widget.AppWidgetId.Companion.getAppWidgetId

AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidgetConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import com.google.android.material.snackbar.Snackbar
3434
import com.ichi2.anki.AnkiActivity
3535
import com.ichi2.anki.R
3636
import com.ichi2.anki.android.AnkiBroadcastReceiver
37+
import com.ichi2.anki.common.utils.ext.unregisterReceiverSilently
3738
import com.ichi2.anki.databinding.WidgetDeckPickerConfigBinding
3839
import com.ichi2.anki.dialogs.DeckSelectionDialog
3940
import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener
@@ -45,7 +46,6 @@ import com.ichi2.anki.showThemedToast
4546
import com.ichi2.anki.snackbar.BaseSnackbarBuilderProvider
4647
import com.ichi2.anki.snackbar.SnackbarBuilder
4748
import com.ichi2.anki.snackbar.showSnackbar
48-
import com.ichi2.anki.utils.ext.unregisterReceiverSilently
4949
import com.ichi2.widget.AppWidgetId.Companion.INVALID_APPWIDGET_ID
5050
import com.ichi2.widget.AppWidgetId.Companion.getAppWidgetId
5151
import com.ichi2.widget.AppWidgetId.Companion.updateWidget
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright (c) 2025 Brayan Oliveira <69634269+brayandso@users.noreply.github.com>
3+
*
4+
* This program is free software; you can redistribute it and/or modify it under
5+
* the terms of the GNU General Public License as published by the Free Software
6+
* Foundation; either version 3 of the License, or (at your option) any later
7+
* version.
8+
*
9+
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
10+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11+
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License along with
14+
* this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
package com.ichi2.anki.common.utils.ext
17+
18+
import android.content.BroadcastReceiver
19+
import android.content.Context
20+
import timber.log.Timber
21+
22+
/**
23+
* Unregisters a [BroadcastReceiver] from [Context] without throwing an [IllegalArgumentException]
24+
* if the receiver wasn't registered.
25+
*
26+
* @param receiver [BroadcastReceiver] to unregister
27+
* @see Context.unregisterReceiver
28+
*/
29+
fun Context.unregisterReceiverSilently(receiver: BroadcastReceiver) {
30+
try {
31+
unregisterReceiver(receiver)
32+
} catch (e: IllegalArgumentException) {
33+
Timber.d(e, "BroadcastReceiver was not previously registered")
34+
}
35+
}

0 commit comments

Comments
 (0)