Fix admin with api/v2

This commit is contained in:
Thomas 2022-11-24 10:35:50 +01:00
parent f70e190863
commit e32b3bf6da
4 changed files with 78 additions and 37 deletions

View file

@ -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(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")) {
binding.permissions.setText(AdminAccount.permissions.get(accountAdmin.role.permissions));
binding.permissions.setText(getString(R.string.user));
if (accountAdmin.role.permissions == 1 || accountAdmin.role.permissions == 400) {
binding.warn.setVisibility(View.GONE);
binding.suspend.setVisibility(View.GONE);
binding.silence.setVisibility(View.GONE);

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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(