Commit e32b3bf6 authored by Thomas's avatar Thomas
Browse files

Fix admin with api/v2

parent f70e1908
Loading
Loading
Loading
Loading
+5 −14
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ public class AccountReportActivity extends BaseActivity {
            binding.email.setVisibility(View.GONE);
            binding.emailLabel.setVisibility(View.GONE);
        }
        if (accountAdmin.ip == null || accountAdmin.ip.ip.trim().equals("")) {
        if (accountAdmin.ip == null || accountAdmin.ip.trim().equals("")) {
            binding.recentIp.setVisibility(View.GONE);
            binding.recentIpLabel.setVisibility(View.GONE);
        }
@@ -243,7 +243,7 @@ public class AccountReportActivity extends BaseActivity {
            binding.emailUser.setVisibility(View.VISIBLE);
            binding.commentLabel.setVisibility(View.VISIBLE);
            binding.comment.setVisibility(View.VISIBLE);
            binding.recentIp.setText(accountAdmin.ip != null ? accountAdmin.ip.ip : "");
            binding.recentIp.setText(accountAdmin.ip != null ? accountAdmin.ip : "");
            binding.disable.setVisibility(View.VISIBLE);
            binding.suspend.setVisibility(View.VISIBLE);
        } else {
@@ -260,18 +260,9 @@ public class AccountReportActivity extends BaseActivity {
        }

        if (accountAdmin.role != null) {
            switch (accountAdmin.role) {
                case "user":
            binding.permissions.setText(AdminAccount.permissions.get(accountAdmin.role.permissions));
            binding.permissions.setText(getString(R.string.user));
                    break;
                case "moderator":
                    binding.permissions.setText(getString(R.string.moderator));
                    break;
                case "admin":
                    binding.permissions.setText(getString(R.string.administrator));
                    break;
            }
            if (accountAdmin.role.equals("admin") || accountAdmin.role.equals("moderator")) {
            if (accountAdmin.role.permissions == 1 || accountAdmin.role.permissions == 400) {
                binding.warn.setVisibility(View.GONE);
                binding.suspend.setVisibility(View.GONE);
                binding.silence.setVisibility(View.GONE);
+62 −16
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import com.google.gson.annotations.SerializedName;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;

public class AdminAccount implements Serializable {
@@ -32,26 +33,48 @@ public class AdminAccount implements Serializable {
    public Date created_at;
    @SerializedName("email")
    public String email;
    public static LinkedHashMap<Integer, String> permissions;

    static {
        permissions = new LinkedHashMap<>();
        permissions.put(1, "Administrator");
        permissions.put(2, "Devops");
        permissions.put(4, "View Audit Log");
        permissions.put(8, "View Dashboard");
        permissions.put(10, "Manage Reports");
        permissions.put(20, "Manage Federation");
        permissions.put(40, "Manage Settings");
        permissions.put(80, "Manage Blocks");
        permissions.put(100, "Manage Taxonomies");
        permissions.put(200, "Manage Appeals");
        permissions.put(400, "Manage Users");
        permissions.put(800, "Manage Invites");
        permissions.put(1000, "Manage Rules");
        permissions.put(2000, "Manage Announcements");
        permissions.put(4000, "Manage Custom Emojis");
        permissions.put(8000, "Manage Webhooks");
        permissions.put(10000, "Invite Users");
        permissions.put(20000, "Manage Roles");
        permissions.put(40000, "Manage User Access");
        permissions.put(80000, "Delete User Data");
    }

    @SerializedName("ip")
    public IP ip;
    @SerializedName("ips")
    public List<IP> ips;
    @SerializedName("locale")
    public String locale;
    @SerializedName("invite_request")
    public String invite_request;
    public String ip;
    @SerializedName("role")
    public String role;
    public Role role;
    @SerializedName("confirmed")
    public boolean confirmed;
    @SerializedName("approved")
    public boolean approved;
    @SerializedName("disabled")
    public boolean disabled;
    @SerializedName("silenced")
    public boolean silenced;
    @SerializedName("suspended")
    public boolean suspended;
    @SerializedName("silenced")
    public boolean silenced;
    @SerializedName("disabled")
    public boolean disabled;
    @SerializedName("approved")
    public boolean approved;
    @SerializedName("ips")
    public List<IP> ips;
    @SerializedName("account")
    public Account account;
    @SerializedName("created_by_application_id")
@@ -65,7 +88,30 @@ public class AdminAccount implements Serializable {
        public String ip;
        @SerializedName("used_at")
        public Date used_at;
        @SerializedName("user_id")
        public String user_id;
    }

    @SerializedName("locale")
    public String locale;
    @SerializedName("invite_request")
    public String invite_request;

    public static class Role implements Serializable {
        @SerializedName("ip")
        public String ip;
        @SerializedName("name")
        public String name;
        @SerializedName("color")
        public String color;
        @SerializedName("position")
        public long position;
        @SerializedName("permissions")
        public int permissions;
        @SerializedName("highlighted")
        public boolean highlighted;
        @SerializedName("created_at")
        public Date created_at;
        @SerializedName("updated_at")
        public Date updated_at;
    }

}
+1 −2
Original line number Diff line number Diff line
@@ -78,8 +78,7 @@ public class AdminAccountAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
        holder.binding.followersCount.setText(String.valueOf(adminAccount.account.followers_count));
        holder.binding.email.setText(adminAccount.email);
        if (adminAccount.ip != null) {
            holder.binding.lastActive.setText(Helper.shortDateToString(adminAccount.ip.used_at));
            holder.binding.ip.setText(adminAccount.ip.ip);
            holder.binding.ip.setText(adminAccount.ip);
        } else if (adminAccount.ips != null && adminAccount.ips.size() > 0) {
            holder.binding.lastActive.setText(Helper.shortDateToString(adminAccount.ips.get(0).used_at));
            holder.binding.ip.setText(adminAccount.ips.get(0).ip);
+10 −5
Original line number Diff line number Diff line
@@ -23,9 +23,6 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.util.List;
import java.util.concurrent.TimeUnit;

@@ -60,7 +57,6 @@ public class AdminVM extends AndroidViewModel {
    }

    private MastodonAdminService init(@NonNull String instance) {
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://" + instance + "/api/v1/")
                .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
@@ -69,6 +65,15 @@ public class AdminVM extends AndroidViewModel {
        return retrofit.create(MastodonAdminService.class);
    }

    private MastodonAdminService initv2(@NonNull String instance) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://" + instance + "/api/v2/")
                .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
                .client(okHttpClient)
                .build();
        return retrofit.create(MastodonAdminService.class);
    }

    /**
     * View accounts matching certain criteria for filtering, up to 100 at a time.
     *
@@ -107,7 +112,7 @@ public class AdminVM extends AndroidViewModel {
                                               String maxId,
                                               String sinceId,
                                               Integer limit) {
        MastodonAdminService mastodonAdminService = init(instance);
        MastodonAdminService mastodonAdminService = initv2(instance);
        adminAccountsListMutableLiveData = new MutableLiveData<>();
        new Thread(() -> {
            Call<List<AdminAccount>> getAccountsCall = mastodonAdminService.getAccounts(