diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 512266dc..7b219c64 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -69,6 +69,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; +import com.google.android.material.snackbar.Snackbar; import com.jaredrummler.cyanea.Cyanea; import java.io.File; @@ -79,6 +80,7 @@ import java.util.regex.Pattern; import app.fedilab.android.activities.ActionActivity; import app.fedilab.android.activities.BaseActivity; import app.fedilab.android.activities.ComposeActivity; +import app.fedilab.android.activities.ContextActivity; import app.fedilab.android.activities.DraftActivity; import app.fedilab.android.activities.FilterActivity; import app.fedilab.android.activities.InstanceActivity; @@ -99,6 +101,7 @@ import app.fedilab.android.client.entities.app.PinnedTimeline; import app.fedilab.android.client.mastodon.entities.Filter; import app.fedilab.android.client.mastodon.entities.Instance; import app.fedilab.android.client.mastodon.entities.MastodonList; +import app.fedilab.android.client.mastodon.entities.Status; import app.fedilab.android.databinding.ActivityMainBinding; import app.fedilab.android.databinding.NavHeaderMainBinding; import app.fedilab.android.exception.DBException; @@ -143,6 +146,19 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt redrawPinned(mastodonLists); } else if (b.getBoolean(Helper.RECEIVE_RECREATE_ACTIVITY, false)) { Cyanea.getInstance().edit().apply().recreate(BaseMainActivity.this); + } else if (b.getBoolean(Helper.RECEIVE_NEW_MESSAGE, false)) { + Status statusSent = (Status) b.getSerializable(Helper.RECEIVE_STATUS_ACTION); + Snackbar.make(binding.getRoot(), getString(R.string.message_has_been_sent), Snackbar.LENGTH_LONG) + .setAction(getString(R.string.display), view -> { + Intent intentContext = new Intent(BaseMainActivity.this, ContextActivity.class); + intentContext.putExtra(Helper.ARG_STATUS, statusSent); + intentContext.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intentContext); + }) + .setTextColor(ThemeHelper.getAttColor(BaseMainActivity.this, R.attr.mTextColor)) + .setActionTextColor(ContextCompat.getColor(BaseMainActivity.this, R.color.cyanea_accent_reference)) + .setBackgroundTint(ContextCompat.getColor(BaseMainActivity.this, R.color.cyanea_primary_dark_reference)) + .show(); } } } diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index 6cceae7b..31038013 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -165,6 +165,7 @@ public class Helper { public static final String RECEIVE_STATUS_ACTION = "RECEIVE_STATUS_ACTION"; public static final String RECEIVE_RECREATE_ACTIVITY = "RECEIVE_RECREATE_ACTIVITY"; + public static final String RECEIVE_NEW_MESSAGE = "RECEIVE_NEW_MESSAGE"; public static final String RECEIVE_MASTODON_LIST = "RECEIVE_MASTODON_LIST"; public static final String RECEIVE_REDRAW_PROFILE = "RECEIVE_REDRAW_PROFILE"; diff --git a/app/src/main/java/app/fedilab/android/helper/ThemeHelper.java b/app/src/main/java/app/fedilab/android/helper/ThemeHelper.java index 1f69a6a3..552443b0 100644 --- a/app/src/main/java/app/fedilab/android/helper/ThemeHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/ThemeHelper.java @@ -22,6 +22,7 @@ import android.content.SharedPreferences; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; +import android.content.res.TypedArray; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.View; @@ -62,6 +63,15 @@ public class ThemeHelper { return typedValue.data; } + + public static int fetchAccentColor(Context context) { + TypedValue typedValue = new TypedValue(); + TypedArray a = context.obtainStyledAttributes(typedValue.data, new int[]{R.attr.colorAccent}); + int color = a.getColor(0, 0); + a.recycle(); + return color; + } + /** * Initialize colors in a static variable * Currently link_color cannot be retrieved with getAttColor in ViewModel due to application and theme diff --git a/app/src/main/java/app/fedilab/android/services/PostMessageService.java b/app/src/main/java/app/fedilab/android/services/PostMessageService.java index 18a34af9..bf7b786c 100644 --- a/app/src/main/java/app/fedilab/android/services/PostMessageService.java +++ b/app/src/main/java/app/fedilab/android/services/PostMessageService.java @@ -14,9 +14,6 @@ package app.fedilab.android.services; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see . */ -import static app.fedilab.android.helper.Helper.NotifType.TOOT; -import static app.fedilab.android.helper.Helper.notify_user; - import android.app.IntentService; import android.app.Notification; import android.app.NotificationChannel; @@ -27,22 +24,20 @@ import android.content.SharedPreferences; import android.graphics.BitmapFactory; import android.os.Build; import android.os.Bundle; -import android.text.Html; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.concurrent.TimeUnit; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; -import app.fedilab.android.activities.ContextActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.Account; import app.fedilab.android.client.entities.PostState; @@ -330,28 +325,12 @@ public class PostMessageService extends IntentService { } if (scheduledDate == null && token != null && firstSendMessage != null) { - Account account; - try { - account = new Account(PostMessageService.this).getAccountByToken(token); - final Intent pendingIntent = new Intent(PostMessageService.this, ContextActivity.class); - pendingIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - pendingIntent.putExtra(Helper.ARG_STATUS, firstSendMessage); - pendingIntent.putExtra(Helper.PREF_INSTANCE, account.instance); - String text = firstSendMessage.content; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) - text = Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY).toString(); - else - text = Html.fromHtml(text).toString(); - if (text.length() > 255) { - text = text.substring(0, 254); - text = String.format(Locale.getDefault(), "%s…", text); - } - notify_user(PostMessageService.this, account, pendingIntent, BitmapFactory.decodeResource(getResources(), - R.mipmap.ic_launcher), TOOT, getString(R.string.message_has_been_sent), text); - } catch (DBException e) { - e.printStackTrace(); - } - + Bundle b = new Bundle(); + b.putBoolean(Helper.RECEIVE_NEW_MESSAGE, true); + Intent intentBD = new Intent(Helper.BROADCAST_DATA); + b.putSerializable(Helper.RECEIVE_STATUS_ACTION, firstSendMessage); + intentBD.putExtras(b); + LocalBroadcastManager.getInstance(PostMessageService.this).sendBroadcast(intentBD); } notificationManager.cancel(NOTIFICATION_INT_CHANNEL_ID); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aabd1e02..8e5df14f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1593,6 +1593,7 @@ Poll type: Poll duration: Always display bookmark button + Display