Replace the context based receiver for Android 14

This commit is contained in:
sictiru 2024-03-11 10:29:10 -07:00
parent 43842c7120
commit 9df11a9302
21 changed files with 152 additions and 163 deletions

View file

@ -51,7 +51,6 @@ android {
}
dependencies {
implementation(Dependencies.coreKtx)
implementation(Dependencies.fragment)
implementation(Dependencies.recyclerView)
implementation(Dependencies.swipeRefreshLayout)

View file

@ -1,8 +1,8 @@
package com.newsblur.activity;
import static com.newsblur.service.NBSyncReceiver.UPDATE_REBUILD;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STATUS;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STORY;
import static com.newsblur.service.NbSyncManager.UPDATE_REBUILD;
import static com.newsblur.service.NbSyncManager.UPDATE_STATUS;
import static com.newsblur.service.NbSyncManager.UPDATE_STORY;
import android.content.Intent;
import android.os.Bundle;

View file

@ -70,7 +70,7 @@ class LoginProgress : FragmentActivity() {
val startMain = Intent(this, Main::class.java)
startActivity(startMain)
} else {
UIUtils.safeToast(this, it.getErrorMessage(getString(R.string.login_message_error)), Toast.LENGTH_LONG)
Toast.makeText(this, it.getErrorMessage(getString(R.string.login_message_error)), Toast.LENGTH_LONG).show()
startActivity(Intent(this, Login::class.java))
}
}

View file

@ -1,9 +1,9 @@
package com.newsblur.activity;
import static com.newsblur.service.NBSyncReceiver.UPDATE_DB_READY;
import static com.newsblur.service.NBSyncReceiver.UPDATE_METADATA;
import static com.newsblur.service.NBSyncReceiver.UPDATE_REBUILD;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STATUS;
import static com.newsblur.service.NbSyncManager.UPDATE_DB_READY;
import static com.newsblur.service.NbSyncManager.UPDATE_METADATA;
import static com.newsblur.service.NbSyncManager.UPDATE_REBUILD;
import static com.newsblur.service.NbSyncManager.UPDATE_STATUS;
import android.content.Intent;
import android.graphics.Bitmap;

View file

@ -1,6 +1,6 @@
package com.newsblur.activity;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STATUS;
import static com.newsblur.service.NbSyncManager.UPDATE_STATUS;
import android.content.Intent;
import android.database.Cursor;

View file

@ -1,17 +1,24 @@
package com.newsblur.activity
import android.content.IntentFilter
import androidx.appcompat.app.AppCompatActivity
import com.newsblur.util.PrefConstants.ThemeValue
import android.os.Bundle
import androidx.core.content.ContextCompat
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.newsblur.database.BlurDatabaseHelper
import com.newsblur.util.PrefsUtils
import com.newsblur.util.UIUtils
import com.newsblur.service.NBSyncReceiver
import com.newsblur.service.NBSync
import com.newsblur.service.NbSyncManager
import com.newsblur.util.FeedUtils
import com.newsblur.util.Log
import com.newsblur.util.PrefConstants.ThemeValue
import com.newsblur.util.PrefsUtils
import com.newsblur.util.UIUtils
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import javax.inject.Inject
/**
@ -27,13 +34,6 @@ open class NbActivity : AppCompatActivity() {
private var uniqueLoginKey: String? = null
private var lastTheme: ThemeValue? = null
// Facilitates the db updates by the sync service on the UI
private val serviceSyncReceiver = object : NBSyncReceiver() {
override fun handleUpdateType(updateType: Int) {
runOnUiThread { handleUpdate(updateType) }
}
}
override fun onCreate(savedInstanceState: Bundle?) {
Log.offerContext(this)
Log.d(this, "onCreate")
@ -62,6 +62,19 @@ open class NbActivity : AppCompatActivity() {
}
finishIfNotLoggedIn()
// Facilitates the db updates by the sync service on the UI
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
launch {
NbSyncManager.state.collectLatest {
withContext(Dispatchers.Main) {
handleSyncUpdate(it)
}
}
}
}
}
}
override fun onResume() {
@ -76,16 +89,11 @@ open class NbActivity : AppCompatActivity() {
PrefsUtils.applyThemePreference(this)
UIUtils.restartActivity(this)
}
ContextCompat.registerReceiver(this, serviceSyncReceiver, IntentFilter().apply {
addAction(NBSyncReceiver.NB_SYNC_ACTION)
}, ContextCompat.RECEIVER_NOT_EXPORTED)
}
override fun onPause() {
Log.d(this.javaClass.name, "onPause")
super.onPause()
unregisterReceiver(serviceSyncReceiver)
}
private fun finishIfNotLoggedIn() {
@ -109,15 +117,18 @@ open class NbActivity : AppCompatActivity() {
FeedUtils.triggerSync(this)
}
/**
* Called on each NB activity after the DB has been updated by the sync service.
*
* @param updateType one or more of the UPDATE_* flags in this class to indicate the
* type of update being broadcast.
*/
private fun handleSyncUpdate(nbSync: NBSync) = when (nbSync) {
is NBSync.Update -> handleUpdate(nbSync.type)
is NBSync.Error -> handleErrorMsg(nbSync.msg)
}
protected open fun handleUpdate(updateType: Int) {
Log.w(this, "activity doesn't implement handleUpdate")
}
private fun handleErrorMsg(msg: String) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
}
}
private const val UNIQUE_LOGIN_KEY = "uniqueLoginKey"

View file

@ -30,9 +30,9 @@ import com.newsblur.fragment.ReadingPagerFragment
import com.newsblur.keyboard.KeyboardEvent
import com.newsblur.keyboard.KeyboardListener
import com.newsblur.keyboard.KeyboardManager
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_REBUILD
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_STATUS
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_STORY
import com.newsblur.service.NbSyncManager.UPDATE_REBUILD
import com.newsblur.service.NbSyncManager.UPDATE_STATUS
import com.newsblur.service.NbSyncManager.UPDATE_STORY
import com.newsblur.service.NBSyncService
import com.newsblur.util.AppConstants
import com.newsblur.util.CursorFilters

View file

@ -15,7 +15,7 @@ import com.newsblur.domain.Story
import com.newsblur.fragment.LoadingFragment
import com.newsblur.fragment.ReadingItemFragment
import com.newsblur.fragment.ReadingItemFragment.Companion.newInstance
import com.newsblur.service.NBSyncReceiver
import com.newsblur.service.NbSyncManager
import com.newsblur.util.Log
import com.newsblur.util.NBScope
import kotlinx.coroutines.Dispatchers
@ -226,7 +226,7 @@ class ReadingAdapter(
for (s in stories) {
fragments[s.storyHash]?.let { rif ->
rif.offerStoryUpdate(s)
rif.handleUpdate(NBSyncReceiver.UPDATE_STORY)
rif.handleUpdate(NbSyncManager.UPDATE_STORY)
}
}
}

View file

@ -82,11 +82,11 @@ public class DeleteFeedFragment extends DialogFragment {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (getArguments().getString(FEED_TYPE).equals(NORMAL_FEED)) {
feedUtils.deleteFeed(getArguments().getString(FEED_ID), getArguments().getString(FOLDER_NAME), getActivity());
feedUtils.deleteFeed(getArguments().getString(FEED_ID), getArguments().getString(FOLDER_NAME));
} else if (getArguments().getString(FEED_TYPE).equals(SAVED_SEARCH_FEED)) {
feedUtils.deleteSavedSearch(getArguments().getString(FEED_ID), getArguments().getString(QUERY), getActivity());
feedUtils.deleteSavedSearch(getArguments().getString(FEED_ID), getArguments().getString(QUERY));
} else {
feedUtils.deleteSocialFeed(getArguments().getString(FEED_ID), getActivity());
feedUtils.deleteSocialFeed(getArguments().getString(FEED_ID));
}
// if called from a feed view, end it
Activity activity = DeleteFeedFragment.this.getActivity();

View file

@ -13,7 +13,6 @@ import com.newsblur.database.BlurDatabaseHelper
import com.newsblur.databinding.LoginasDialogBinding
import com.newsblur.network.APIManager
import com.newsblur.util.PrefsUtils
import com.newsblur.util.UIUtils
import com.newsblur.util.executeAsyncTask
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@ -50,7 +49,7 @@ class LoginAsDialogFragment : DialogFragment() {
val startMain = Intent(requireContext(), Main::class.java)
requireContext().startActivity(startMain)
} else {
UIUtils.safeToast(requireActivity(), "Login as $username failed", Toast.LENGTH_LONG)
Toast.makeText(requireActivity(), "Login as $username failed", Toast.LENGTH_LONG).show()
}
}
)

View file

@ -33,10 +33,10 @@ import com.newsblur.domain.Story
import com.newsblur.domain.UserDetails
import com.newsblur.keyboard.KeyboardManager
import com.newsblur.network.APIManager
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_INTEL
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_SOCIAL
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_STORY
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_TEXT
import com.newsblur.service.NbSyncManager.UPDATE_INTEL
import com.newsblur.service.NbSyncManager.UPDATE_SOCIAL
import com.newsblur.service.NbSyncManager.UPDATE_STORY
import com.newsblur.service.NbSyncManager.UPDATE_TEXT
import com.newsblur.service.OriginalTextService
import com.newsblur.util.*
import com.newsblur.util.PrefConstants.ThemeValue

View file

@ -1,31 +0,0 @@
package com.newsblur.service
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
abstract class NBSyncReceiver : BroadcastReceiver() {
abstract fun handleUpdateType(updateType: Int)
override fun onReceive(context: Context?, intent: Intent?) {
if (intent?.action == NB_SYNC_ACTION) {
handleUpdateType(intent.getIntExtra(NB_SYNC_UPDATE_TYPE, 0))
}
}
companion object {
const val NB_SYNC_ACTION = "nb.sync.action"
const val NB_SYNC_ERROR_MESSAGE = "nb_sync_error_msg"
const val NB_SYNC_UPDATE_TYPE = "nb_sync_update_type"
const val UPDATE_DB_READY = 1 shl 0
const val UPDATE_METADATA = 1 shl 1
const val UPDATE_STORY = 1 shl 2
const val UPDATE_SOCIAL = 1 shl 3
const val UPDATE_INTEL = 1 shl 4
const val UPDATE_STATUS = 1 shl 5
const val UPDATE_TEXT = 1 shl 6
const val UPDATE_REBUILD = 1 shl 7
}
}

View file

@ -13,11 +13,11 @@ import com.newsblur.NbApplication;
import com.newsblur.R;
import com.newsblur.database.BlurDatabaseHelper;
import static com.newsblur.database.BlurDatabaseHelper.closeQuietly;
import static com.newsblur.service.NBSyncReceiver.UPDATE_DB_READY;
import static com.newsblur.service.NBSyncReceiver.UPDATE_METADATA;
import static com.newsblur.service.NBSyncReceiver.UPDATE_REBUILD;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STATUS;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STORY;
import static com.newsblur.service.NbSyncManager.UPDATE_DB_READY;
import static com.newsblur.service.NbSyncManager.UPDATE_METADATA;
import static com.newsblur.service.NbSyncManager.UPDATE_REBUILD;
import static com.newsblur.service.NbSyncManager.UPDATE_STATUS;
import static com.newsblur.service.NbSyncManager.UPDATE_STORY;
import androidx.annotation.NonNull;
@ -47,10 +47,7 @@ import com.newsblur.util.NetworkUtils;
import com.newsblur.util.NotificationUtils;
import com.newsblur.util.PrefsUtils;
import com.newsblur.util.ReadingAction;
import com.newsblur.util.ReadFilter;
import com.newsblur.util.StateFilter;
import com.newsblur.util.StoryOrder;
import com.newsblur.util.UIUtils;
import com.newsblur.widget.WidgetUtils;
import java.util.ArrayList;
@ -272,6 +269,12 @@ public class NBSyncService extends JobService {
return false;
}
@Override
public void onNetworkChanged(@NonNull JobParameters params) {
super.onNetworkChanged(params);
com.newsblur.util.Log.d(this, "onNetworkChanged");
}
/**
* Do the actual work of syncing.
*/
@ -1160,7 +1163,7 @@ public class NBSyncService extends JobService {
dbHelper.prepareReadingSession(fs, cursorFilters.getStateFilter(), cursorFilters.getReadFilter());
// note which feedset we are loading so we can trigger another reset when it changes
dbHelper.setSessionFeedSet(fs);
UIUtils.syncUpdateStatus(context, UPDATE_STORY | UPDATE_STATUS);
NbSyncManager.submitUpdate(UPDATE_STORY | UPDATE_STATUS);
}
}
}
@ -1270,15 +1273,11 @@ public class NBSyncService extends JobService {
}
protected void sendSyncUpdate(int update) {
Intent i = new Intent(NBSyncReceiver.NB_SYNC_ACTION);
i.putExtra(NBSyncReceiver.NB_SYNC_UPDATE_TYPE, update);
broadcastSync(i);
NbSyncManager.submitUpdate(UPDATE_STORY | UPDATE_STATUS);
}
protected void sendToastError(@NonNull String message) {
Intent i = new Intent(NBSyncReceiver.NB_SYNC_ACTION);
i.putExtra(NBSyncReceiver.NB_SYNC_ERROR_MESSAGE, message);
broadcastSync(i);
NbSyncManager.submitError(message);
}
private void broadcastSync(@NonNull Intent intent) {

View file

@ -0,0 +1,44 @@
package com.newsblur.service
import com.newsblur.util.NBScope
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.launch
object NbSyncManager {
const val UPDATE_DB_READY = 1 shl 0
const val UPDATE_METADATA = 1 shl 1
const val UPDATE_STORY = 1 shl 2
const val UPDATE_SOCIAL = 1 shl 3
const val UPDATE_INTEL = 1 shl 4
const val UPDATE_STATUS = 1 shl 5
const val UPDATE_TEXT = 1 shl 6
const val UPDATE_REBUILD = 1 shl 7
private val _state = MutableSharedFlow<NBSync>()
val state = _state.asSharedFlow()
@JvmStatic
fun submitUpdate(type: Int) = submit(NBSync.Update(type))
@JvmStatic
fun submitError(msg: String) = submit(NBSync.Error(msg))
private fun submit(nbSync: NBSync) {
NBScope.launch {
_state.emit(nbSync)
}
}
}
sealed class NBSync {
data class Error(
val msg: String,
) : NBSync()
data class Update(
val type: Int,
) : NBSync()
}

View file

@ -1,6 +1,6 @@
package com.newsblur.service;
import static com.newsblur.service.NBSyncReceiver.UPDATE_TEXT;
import static com.newsblur.service.NbSyncManager.UPDATE_TEXT;
import com.newsblur.database.DatabaseConstants;
import com.newsblur.network.domain.StoryTextResponse;

View file

@ -36,7 +36,7 @@ abstract class SubService(
if (isActive) {
parent.checkCompletion()
parent.sendSyncUpdate(NBSyncReceiver.UPDATE_STATUS)
parent.sendSyncUpdate(NbSyncManager.UPDATE_STATUS)
}
}
}

View file

@ -13,15 +13,14 @@ import com.newsblur.domain.Story
import com.newsblur.fragment.ReadingActionConfirmationFragment
import com.newsblur.network.APIConstants
import com.newsblur.network.APIManager
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_METADATA
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_SOCIAL
import com.newsblur.service.NBSyncReceiver.Companion.UPDATE_STORY
import com.newsblur.service.NbSyncManager.UPDATE_METADATA
import com.newsblur.service.NbSyncManager.UPDATE_SOCIAL
import com.newsblur.service.NbSyncManager.UPDATE_STORY
import com.newsblur.service.NBSyncService
import com.newsblur.service.OriginalTextService
import com.newsblur.util.FeedExt.disableNotification
import com.newsblur.util.FeedExt.setNotifyFocus
import com.newsblur.util.FeedExt.setNotifyUnread
import com.newsblur.util.UIUtils.syncUpdateStatus
class FeedUtils(
private val dbHelper: BlurDatabaseHelper,
@ -67,14 +66,14 @@ class FeedUtils(
doInBackground = {
val ra = if (saved) ReadingAction.saveStory(storyHash, userTags) else ReadingAction.unsaveStory(storyHash)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_STORY)
syncUpdateStatus(UPDATE_STORY)
dbHelper.enqueueAction(ra)
triggerSync(context)
}
)
}
fun deleteSavedSearch(feedId: String?, query: String?, context: Context) {
fun deleteSavedSearch(feedId: String?, query: String?) {
NBScope.executeAsyncTask(
doInBackground = {
apiManager.deleteSearch(feedId, query)
@ -82,7 +81,7 @@ class FeedUtils(
onPostExecute = { newsBlurResponse ->
if (!newsBlurResponse.isError) {
dbHelper.deleteSavedSearch(feedId, query)
syncUpdateStatus(context, UPDATE_METADATA)
syncUpdateStatus(UPDATE_METADATA)
}
}
)
@ -102,7 +101,7 @@ class FeedUtils(
)
}
fun deleteFeed(feedId: String?, folderName: String?, context: Context) {
fun deleteFeed(feedId: String?, folderName: String?) {
NBScope.executeAsyncTask(
doInBackground = {
apiManager.deleteFeed(feedId, folderName)
@ -110,12 +109,12 @@ class FeedUtils(
onPostExecute = {
// TODO: we can't check result.isError() because the delete call sets the .message property on all calls. find a better error check
dbHelper.deleteFeed(feedId)
syncUpdateStatus(context, UPDATE_METADATA)
syncUpdateStatus(UPDATE_METADATA)
}
)
}
fun deleteSocialFeed(userId: String?, context: Context) {
fun deleteSocialFeed(userId: String?) {
NBScope.executeAsyncTask(
doInBackground = {
apiManager.unfollowUser(userId)
@ -123,7 +122,7 @@ class FeedUtils(
onPostExecute = {
// TODO: we can't check result.isError() because the delete call sets the .message property on all calls. find a better error check
dbHelper.deleteSocialFeed(userId)
syncUpdateStatus(context, UPDATE_METADATA)
syncUpdateStatus(UPDATE_METADATA)
}
)
}
@ -190,7 +189,7 @@ class FeedUtils(
// update unread state and unread counts in the local DB
val impactedFeeds = dbHelper.setStoryReadState(story, read)
syncUpdateStatus(context, UPDATE_STORY)
syncUpdateStatus(UPDATE_STORY)
NBSyncService.addRecountCandidates(impactedFeeds)
triggerSync(context)
@ -310,7 +309,7 @@ class FeedUtils(
doInBackground = {
dbHelper.enqueueAction(ra)
val impact = ra.doLocal(context, dbHelper)
syncUpdateStatus(context, impact)
syncUpdateStatus(impact)
triggerSync(context)
}
)
@ -353,7 +352,7 @@ class FeedUtils(
val ra = ReadingAction.shareStory(story.storyHash, story.id, story.feedId, sourceUserId, comment)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL or UPDATE_STORY)
syncUpdateStatus(UPDATE_SOCIAL or UPDATE_STORY)
triggerSync(context)
}
@ -361,7 +360,7 @@ class FeedUtils(
val ra = ReadingAction.renameFeed(feedId, newFeedName)
dbHelper.enqueueAction(ra)
val impact = ra.doLocal(context, dbHelper)
syncUpdateStatus(context, impact)
syncUpdateStatus(impact)
triggerSync(context)
}
@ -369,7 +368,7 @@ class FeedUtils(
val ra = ReadingAction.unshareStory(story.storyHash, story.id, story.feedId)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL or UPDATE_STORY)
syncUpdateStatus(UPDATE_SOCIAL or UPDATE_STORY)
triggerSync(context)
}
@ -377,7 +376,7 @@ class FeedUtils(
val ra = ReadingAction.likeComment(story.id, commentUserId, story.feedId)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL)
syncUpdateStatus(UPDATE_SOCIAL)
triggerSync(context)
}
@ -385,7 +384,7 @@ class FeedUtils(
val ra = ReadingAction.unlikeComment(story.id, commentUserId, story.feedId)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL)
syncUpdateStatus(UPDATE_SOCIAL)
triggerSync(context)
}
@ -393,7 +392,7 @@ class FeedUtils(
val ra = ReadingAction.replyToComment(storyId, feedId, commentUserId, replyText)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL)
syncUpdateStatus(UPDATE_SOCIAL)
triggerSync(context)
}
@ -401,7 +400,7 @@ class FeedUtils(
val ra = ReadingAction.updateReply(story.id, story.feedId, commentUserId, replyId, replyText)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL)
syncUpdateStatus(UPDATE_SOCIAL)
triggerSync(context)
}
@ -409,7 +408,7 @@ class FeedUtils(
val ra = ReadingAction.deleteReply(story.id, story.feedId, commentUserId, replyId)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_SOCIAL)
syncUpdateStatus(UPDATE_SOCIAL)
triggerSync(context)
}
@ -455,7 +454,7 @@ class FeedUtils(
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_METADATA)
syncUpdateStatus(UPDATE_METADATA)
triggerSync(context)
}
)
@ -465,7 +464,7 @@ class FeedUtils(
val ra = ReadingAction.instaFetch(feedId)
dbHelper.enqueueAction(ra)
ra.doLocal(context, dbHelper)
syncUpdateStatus(context, UPDATE_METADATA)
syncUpdateStatus(UPDATE_METADATA)
triggerSync(context)
}
@ -487,6 +486,10 @@ class FeedUtils(
UIUtils.handleUri(context, Uri.parse(url))
}
private fun syncUpdateStatus(updateType: Int) {
}
companion object {
@JvmStatic

View file

@ -1,9 +1,9 @@
package com.newsblur.util;
import static com.newsblur.service.NBSyncReceiver.UPDATE_INTEL;
import static com.newsblur.service.NBSyncReceiver.UPDATE_METADATA;
import static com.newsblur.service.NBSyncReceiver.UPDATE_SOCIAL;
import static com.newsblur.service.NBSyncReceiver.UPDATE_STORY;
import static com.newsblur.service.NbSyncManager.UPDATE_INTEL;
import static com.newsblur.service.NbSyncManager.UPDATE_METADATA;
import static com.newsblur.service.NbSyncManager.UPDATE_SOCIAL;
import static com.newsblur.service.NbSyncManager.UPDATE_STORY;
import android.content.ContentValues;
import android.content.Context;
@ -18,7 +18,7 @@ import com.newsblur.network.domain.CommentResponse;
import com.newsblur.network.domain.NewsBlurResponse;
import com.newsblur.network.domain.StoriesResponse;
import com.newsblur.network.APIManager;
import com.newsblur.service.NBSyncReceiver;
import com.newsblur.service.NbSyncManager;
import com.newsblur.service.NBSyncService;
import java.util.ArrayList;
@ -375,7 +375,7 @@ public class ReadingAction implements Serializable {
} else {
com.newsblur.util.Log.w(this, "failed to refresh story data after action");
}
impact |= NBSyncReceiver.UPDATE_SOCIAL;
impact |= NbSyncManager.UPDATE_SOCIAL;
}
if (commentResponse != null) {
result = commentResponse;
@ -384,7 +384,7 @@ public class ReadingAction implements Serializable {
} else {
com.newsblur.util.Log.w(this, "failed to refresh comment data after action");
}
impact |= NBSyncReceiver.UPDATE_SOCIAL;
impact |= NbSyncManager.UPDATE_SOCIAL;
}
if (result != null && impact != 0) {
result.impactCode = impact;

View file

@ -34,7 +34,6 @@ import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
@ -48,17 +47,15 @@ import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.snackbar.Snackbar;
import com.newsblur.NbApplication;
import com.newsblur.R;
import com.newsblur.activity.*;
import com.newsblur.domain.Classifier;
import com.newsblur.domain.Story;
import com.newsblur.service.NBSyncReceiver;
public class UIUtils {
private UIUtils() {} // util class - no instances
public static Bitmap clipAndRound(Bitmap source, boolean roundCorners, boolean clipSquare) {
Bitmap result = source;
if (clipSquare) {
@ -223,28 +220,6 @@ public class UIUtils {
return iconView;
}
/**
* Shows a toast in a circumstance where the context might be null. This can very
* rarely happen when toasts are done from async tasks and the context is finished
* before the task completes, resulting in a crash. This prevents the crash at the
* cost of the toast not being shown.
*/
public static void safeToast(final Activity c, final int rid, final int duration) {
if (c != null) {
c.runOnUiThread(new Runnable() { public void run() {
Toast.makeText(c, rid, duration).show();
}});
}
}
public static void safeToast(final Activity c, final String text, final int duration) {
if ((c != null) && (text != null)) {
c.runOnUiThread(new Runnable() { public void run() {
Toast.makeText(c, text, duration).show();
}});
}
}
/**
* Restart an activity. See http://stackoverflow.com/a/11651252/70795
* We post this on the Handler to allow onResume to finish before the activity restarts
@ -605,14 +580,6 @@ public class UIUtils {
}
}
public static void syncUpdateStatus(Context context, int updateType) {
if (NbApplication.isAppForeground()) {
Intent intent = new Intent(NBSyncReceiver.NB_SYNC_ACTION);
intent.putExtra(NBSyncReceiver.NB_SYNC_UPDATE_TYPE, updateType);
context.sendBroadcast(intent);
}
}
public static void showSnackBar(View view, String message) {
Snackbar.make(view, message, 600).show();
}

View file

@ -13,7 +13,6 @@ object Dependencies {
const val lifecycleRuntime = "androidx.lifecycle:lifecycle-runtime-ktx:${Version.lifecycle}"
const val lifecycleProcess = "androidx.lifecycle:lifecycle-process:${Version.lifecycle}"
const val splashScreen = "androidx.core:core-splashscreen:${Version.splashScreen}"
const val coreKtx = "androidx.core:core-ktx:${Version.coreKtx}"
const val hiltAndroid = "com.google.dagger:hilt-android:${Version.hilt}"
const val hiltCompiler = "com.google.dagger:hilt-compiler:${Version.hilt}"
const val profileInstaller = "androidx.profileinstaller:profileinstaller:${Version.profileInstaller}"

View file

@ -18,7 +18,6 @@ object Version {
const val browser = "1.8.0"
const val lifecycle = "2.7.0"
const val splashScreen = "1.0.1"
const val coreKtx = "1.12.0"
const val hilt = "2.51"
const val profileInstaller = "1.3.1"