mirror of
				https://codeberg.org/tom79/Fedilab.git
				synced 2025-10-20 11:20:16 +03:00 
			
		
		
		
	Use in app notification when posting
This commit is contained in:
		
							parent
							
								
									d66c056b45
								
							
						
					
					
						commit
						73b7662f45
					
				
					 5 changed files with 35 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -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();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 <http://www.gnu.org/licenses>. */
 | 
			
		||||
 | 
			
		||||
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);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1593,6 +1593,7 @@
 | 
			
		|||
    <string name="poll_type">Poll type:</string>
 | 
			
		||||
    <string name="poll_duration">Poll duration:</string>
 | 
			
		||||
    <string name="set_display_bookmark_indication">Always display bookmark button</string>
 | 
			
		||||
    <string name="display">Display</string>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</resources>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue