Commit 890b9b64 authored by Thomas's avatar Thomas
Browse files

Announcements

parent 5d926865
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -150,6 +150,9 @@
        <activity
            android:name=".activities.HashTagActivity"
            android:configChanges="keyboardHidden|orientation|screenSize" />
        <activity
            android:name=".activities.AnnouncementActivity"
            android:configChanges="keyboardHidden|orientation|screenSize" />
        <activity
            android:name=".activities.MediaActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
+17 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ import java.util.regex.Pattern;
import app.fedilab.android.activities.AboutActivity;
import app.fedilab.android.activities.ActionActivity;
import app.fedilab.android.activities.AdminActionActivity;
import app.fedilab.android.activities.AnnouncementActivity;
import app.fedilab.android.activities.BaseActivity;
import app.fedilab.android.activities.ComposeActivity;
import app.fedilab.android.activities.ContextActivity;
@@ -99,6 +100,8 @@ import app.fedilab.android.activities.ScheduledActivity;
import app.fedilab.android.activities.SearchResultTabActivity;
import app.fedilab.android.activities.SettingsActivity;
import app.fedilab.android.broadcastreceiver.NetworkStateReceiver;
import app.fedilab.android.client.entities.api.Emoji;
import app.fedilab.android.client.entities.api.EmojiInstance;
import app.fedilab.android.client.entities.api.Filter;
import app.fedilab.android.client.entities.api.Instance;
import app.fedilab.android.client.entities.api.MastodonList;
@@ -128,6 +131,7 @@ import es.dmoral.toasty.Toasty;
public abstract class BaseMainActivity extends BaseActivity implements NetworkStateReceiver.NetworkStateReceiverListener {

    public static String currentInstance, currentToken, currentUserID, client_id, client_secret, software;
    public static List<Emoji> emojis;
    public static Account.API api;
    public static boolean admin;
    public static WeakReference<Account> accountWeakReference;
@@ -351,6 +355,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
            } else if (id == R.id.nav_partnership) {
                Intent intent = new Intent(this, PartnerShipActivity.class);
                startActivity(intent);
            } else if (id == R.id.nav_announcements) {
                Intent intent = new Intent(this, AnnouncementActivity.class);
                startActivity(intent);
            }
            binding.drawerLayout.close();
            return false;
@@ -724,6 +731,15 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
        binding.toolbarSearch.setOnSearchClickListener(v -> binding.tabLayout.setVisibility(View.VISIBLE));
        //For receiving  data from other activities
        LocalBroadcastManager.getInstance(BaseMainActivity.this).registerReceiver(broadcast_data, new IntentFilter(Helper.BROADCAST_DATA));
        if (emojis == null) {
            new Thread(() -> {
                try {
                    emojis = new EmojiInstance(BaseMainActivity.this).getEmojiList(BaseMainActivity.currentInstance);
                } catch (DBException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }


@@ -856,6 +872,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
            return false;
        });
        popup.show();

    }

    public void refreshFragment() {
+82 −0
Original line number Diff line number Diff line
package app.fedilab.android.activities;
/* Copyright 2022 Thomas Schneider
 *
 * This file is a part of Fedilab
 *
 * This program is free software; you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation; either version 3 of the
 * License, or (at your option) any later version.
 *
 * Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
 * Public License for more details.
 *
 * 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.BaseMainActivity.emojis;

import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.MenuItem;

import androidx.appcompat.app.ActionBar;
import androidx.core.content.ContextCompat;

import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R;
import app.fedilab.android.client.entities.api.EmojiInstance;
import app.fedilab.android.databinding.ActivityAnnouncementBinding;
import app.fedilab.android.exception.DBException;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.ThemeHelper;
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonAnnouncement;


public class AnnouncementActivity extends BaseActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ThemeHelper.applyTheme(this);
        ActivityAnnouncementBinding binding = ActivityAnnouncementBinding.inflate(getLayoutInflater());

        setContentView(binding.getRoot());

        setSupportActionBar(binding.toolbar);
        ActionBar actionBar = getSupportActionBar();
        //Remove title
        if (actionBar != null) {
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary)));
        }
        binding.title.setText(R.string.action_announcements);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

        Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_tags, new FragmentMastodonAnnouncement(), null, null, null);
        if (emojis == null) {
            new Thread(() -> {
                try {
                    emojis = new EmojiInstance(AnnouncementActivity.this).getEmojiList(BaseMainActivity.currentInstance);
                } catch (DBException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}
+5 −6
Original line number Diff line number Diff line
@@ -30,28 +30,27 @@ import retrofit2.http.Query;

public interface MastodonAnnouncementsService {

    @GET("/announcements")
    @GET("announcements")
    Call<List<Announcement>> getAnnouncements(
            @Header("Authorization") String token,
            @Query("with_dismissed") boolean with_dismissed
            @Query("with_dismissed") Boolean with_dismissed
    );

    @FormUrlEncoded
    @POST("/announcements/{id}/dismiss")
    @POST("announcements/{id}/dismiss")
    Call<Void> dismiss(
            @Header("Authorization") String app_token,
            @Path("id") String id
    );

    @FormUrlEncoded
    @PUT("/announcements/{id}/reactions/{name}")
    @PUT("announcements/{id}/reactions/{name}")
    Call<Void> addReaction(
            @Header("Authorization") String app_token,
            @Path("id") String id,
            @Path("name") String name
    );

    @DELETE("/announcements/{id}/reactions/{name}")
    @DELETE("announcements/{id}/reactions/{name}")
    Call<Void> removeReaction(
            @Header("Authorization") String app_token,
            @Path("id") String id,
+5 −0
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ package app.fedilab.android.client.entities.api;
 * You should have received a copy of the GNU General Public License along with Fedilab; if not,
 * see <http://www.gnu.org/licenses>. */

import android.text.Spannable;

import com.google.gson.annotations.SerializedName;

import java.util.Date;
@@ -46,4 +48,7 @@ public class Announcement {
    public List<Emoji> emojis;
    @SerializedName("reactions")
    public List<Reaction> reactions;

    //Some extra spannable element - They will be filled automatically when fetching the status
    public transient Spannable span_content;
}
Loading