Loading app/src/main/AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,11 @@ android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/action_about" android:theme="@style/AppThemeBar" /> <activity android:name=".activities.admin.AdminDomainBlockActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/blocked_domains" android:theme="@style/AppThemeBar" /> <activity android:name=".activities.SuggestionActivity" android:configChanges="keyboardHidden|orientation|screenSize" Loading app/src/main/java/app/fedilab/android/activities/admin/AdminActionActivity.java +4 −1 Original line number Diff line number Diff line Loading @@ -128,7 +128,7 @@ public class AdminActionActivity extends BaseActivity { @Override public boolean onCreateOptionsMenu(@NonNull Menu menu) { if (canGoBack) { if (canGoBack && fragmentAdminAccount != null) { getMenuInflater().inflate(R.menu.menu_admin_account, menu); } return super.onCreateOptionsMenu(menu); Loading Loading @@ -297,12 +297,15 @@ public class AdminActionActivity extends BaseActivity { ThemeHelper.slideViewsToRight(binding.fragmentContainer, binding.buttonContainer, () -> { if (fragmentAdminReport != null) { fragmentAdminReport.onDestroyView(); fragmentAdminReport = null; } if (fragmentAdminAccount != null) { fragmentAdminAccount.onDestroyView(); fragmentAdminAccount = null; } if (fragmentAdminDomain != null) { fragmentAdminDomain.onDestroyView(); fragmentAdminDomain = null; } setTitle(R.string.administration); invalidateOptionsMenu(); Loading app/src/main/java/app/fedilab/android/activities/admin/AdminDomainBlockActivity.java 0 → 100644 +123 −0 Original line number Diff line number Diff line package app.fedilab.android.activities.admin; /* 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 android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import androidx.core.content.ContextCompat; import androidx.lifecycle.ViewModelProvider; import app.fedilab.android.R; import app.fedilab.android.activities.BaseActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.api.admin.AdminDomainBlock; import app.fedilab.android.databinding.ActivityAdminDomainblockBinding; import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.viewmodel.mastodon.AdminVM; import es.dmoral.toasty.Toasty; public class AdminDomainBlockActivity extends BaseActivity { private final String[] severityChoices = {"silence", "suspend", "noop"}; private AdminVM adminVM; private AdminDomainBlock adminDomainBlock; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ThemeHelper.applyThemeBar(this); ActivityAdminDomainblockBinding binding = ActivityAdminDomainblockBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary))); } Bundle b = getIntent().getExtras(); if (b != null) { adminDomainBlock = (AdminDomainBlock) b.getSerializable(Helper.ARG_ADMIN_DOMAINBLOCK); } ArrayAdapter<CharSequence> adapterResize = ArrayAdapter.createFromResource(this, R.array.admin_block_severity, android.R.layout.simple_spinner_dropdown_item); binding.severity.setAdapter(adapterResize); if (adminDomainBlock != null) { binding.domain.setText(adminDomainBlock.domain); binding.domain.setEnabled(false); for (int i = 0; i < severityChoices.length; i++) { if (adminDomainBlock.severity.equalsIgnoreCase(severityChoices[i])) { binding.severity.setSelection(i, false); break; } } binding.obfuscate.setChecked(adminDomainBlock.obfuscate); binding.rejectMedia.setChecked(adminDomainBlock.reject_media); binding.rejectReports.setChecked(adminDomainBlock.reject_reports); binding.privateComment.setText(adminDomainBlock.private_comment); binding.publicComment.setText(adminDomainBlock.public_comment); } else { adminDomainBlock = new AdminDomainBlock(); } binding.severity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { adminDomainBlock.severity = severityChoices[position]; } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); binding.obfuscate.setOnCheckedChangeListener((compoundButton, checked) -> adminDomainBlock.obfuscate = checked); binding.rejectMedia.setOnCheckedChangeListener((compoundButton, checked) -> adminDomainBlock.reject_media = checked); binding.rejectReports.setOnCheckedChangeListener((compoundButton, checked) -> adminDomainBlock.reject_reports = checked); adminVM = new ViewModelProvider(AdminDomainBlockActivity.this).get(AdminVM.class); binding.saveChanges.setOnClickListener(v -> { adminDomainBlock.domain = binding.domain.getText().toString().trim(); adminDomainBlock.public_comment = binding.publicComment.getText().toString().trim(); adminDomainBlock.private_comment = binding.privateComment.getText().toString().trim(); adminVM.createOrUpdateDomainBlock(MainActivity.currentInstance, MainActivity.currentToken, adminDomainBlock) .observe(AdminDomainBlockActivity.this, adminDomainBlockResult -> { if (adminDomainBlockResult != null) { Toasty.success(AdminDomainBlockActivity.this, getString(R.string.saved_changes), Toasty.LENGTH_SHORT).show(); } else { Toasty.error(AdminDomainBlockActivity.this, getString(R.string.toast_error), Toasty.LENGTH_SHORT).show(); } } ); }); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == android.R.id.home) { finish(); return true; } return true; } } app/src/main/java/app/fedilab/android/client/endpoints/MastodonAdminService.java +3 −3 Original line number Diff line number Diff line Loading @@ -188,7 +188,7 @@ public interface MastodonAdminService { @POST("admin/domain_blocks") Call<AdminDomainBlock> blockDomain( @Header("Authorization") String app_token, @Path("domain") String domain, @Field("domain") String domain, @Field("severity") String severity, @Field("reject_media") Boolean reject_media, @Field("reject_reports") Boolean reject_reports, Loading @@ -205,10 +205,10 @@ public interface MastodonAdminService { ); @FormUrlEncoded @PUT("admin/domain_blocks") @PUT("admin/domain_blocks/{id}") Call<AdminDomainBlock> updateBlockDomain( @Header("Authorization") String app_token, @Path("domain") String domain, @Path("id") String id, @Field("severity") String severity, @Field("reject_media") Boolean reject_media, @Field("reject_reports") Boolean reject_reports, Loading app/src/main/java/app/fedilab/android/helper/Helper.java +2 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,8 @@ public class Helper { public static final String ARG_STATUS_REPLY_ID = "ARG_STATUS_REPLY_ID"; public static final String ARG_ACCOUNT = "ARG_ACCOUNT"; public static final String ARG_ACCOUNT_ID = "ARG_ACCOUNT_ID"; public static final String ARG_ADMIN_DOMAINBLOCK = "ARG_ADMIN_DOMAINBLOCK"; public static final String ARG_REPORT = "ARG_REPORT"; public static final String ARG_ACCOUNT_MENTION = "ARG_ACCOUNT_MENTION"; public static final String ARG_MINIFIED = "ARG_MINIFIED"; Loading Loading
app/src/main/AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,11 @@ android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/action_about" android:theme="@style/AppThemeBar" /> <activity android:name=".activities.admin.AdminDomainBlockActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/blocked_domains" android:theme="@style/AppThemeBar" /> <activity android:name=".activities.SuggestionActivity" android:configChanges="keyboardHidden|orientation|screenSize" Loading
app/src/main/java/app/fedilab/android/activities/admin/AdminActionActivity.java +4 −1 Original line number Diff line number Diff line Loading @@ -128,7 +128,7 @@ public class AdminActionActivity extends BaseActivity { @Override public boolean onCreateOptionsMenu(@NonNull Menu menu) { if (canGoBack) { if (canGoBack && fragmentAdminAccount != null) { getMenuInflater().inflate(R.menu.menu_admin_account, menu); } return super.onCreateOptionsMenu(menu); Loading Loading @@ -297,12 +297,15 @@ public class AdminActionActivity extends BaseActivity { ThemeHelper.slideViewsToRight(binding.fragmentContainer, binding.buttonContainer, () -> { if (fragmentAdminReport != null) { fragmentAdminReport.onDestroyView(); fragmentAdminReport = null; } if (fragmentAdminAccount != null) { fragmentAdminAccount.onDestroyView(); fragmentAdminAccount = null; } if (fragmentAdminDomain != null) { fragmentAdminDomain.onDestroyView(); fragmentAdminDomain = null; } setTitle(R.string.administration); invalidateOptionsMenu(); Loading
app/src/main/java/app/fedilab/android/activities/admin/AdminDomainBlockActivity.java 0 → 100644 +123 −0 Original line number Diff line number Diff line package app.fedilab.android.activities.admin; /* 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 android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import androidx.core.content.ContextCompat; import androidx.lifecycle.ViewModelProvider; import app.fedilab.android.R; import app.fedilab.android.activities.BaseActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.api.admin.AdminDomainBlock; import app.fedilab.android.databinding.ActivityAdminDomainblockBinding; import app.fedilab.android.helper.Helper; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.viewmodel.mastodon.AdminVM; import es.dmoral.toasty.Toasty; public class AdminDomainBlockActivity extends BaseActivity { private final String[] severityChoices = {"silence", "suspend", "noop"}; private AdminVM adminVM; private AdminDomainBlock adminDomainBlock; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ThemeHelper.applyThemeBar(this); ActivityAdminDomainblockBinding binding = ActivityAdminDomainblockBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary))); } Bundle b = getIntent().getExtras(); if (b != null) { adminDomainBlock = (AdminDomainBlock) b.getSerializable(Helper.ARG_ADMIN_DOMAINBLOCK); } ArrayAdapter<CharSequence> adapterResize = ArrayAdapter.createFromResource(this, R.array.admin_block_severity, android.R.layout.simple_spinner_dropdown_item); binding.severity.setAdapter(adapterResize); if (adminDomainBlock != null) { binding.domain.setText(adminDomainBlock.domain); binding.domain.setEnabled(false); for (int i = 0; i < severityChoices.length; i++) { if (adminDomainBlock.severity.equalsIgnoreCase(severityChoices[i])) { binding.severity.setSelection(i, false); break; } } binding.obfuscate.setChecked(adminDomainBlock.obfuscate); binding.rejectMedia.setChecked(adminDomainBlock.reject_media); binding.rejectReports.setChecked(adminDomainBlock.reject_reports); binding.privateComment.setText(adminDomainBlock.private_comment); binding.publicComment.setText(adminDomainBlock.public_comment); } else { adminDomainBlock = new AdminDomainBlock(); } binding.severity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { adminDomainBlock.severity = severityChoices[position]; } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); binding.obfuscate.setOnCheckedChangeListener((compoundButton, checked) -> adminDomainBlock.obfuscate = checked); binding.rejectMedia.setOnCheckedChangeListener((compoundButton, checked) -> adminDomainBlock.reject_media = checked); binding.rejectReports.setOnCheckedChangeListener((compoundButton, checked) -> adminDomainBlock.reject_reports = checked); adminVM = new ViewModelProvider(AdminDomainBlockActivity.this).get(AdminVM.class); binding.saveChanges.setOnClickListener(v -> { adminDomainBlock.domain = binding.domain.getText().toString().trim(); adminDomainBlock.public_comment = binding.publicComment.getText().toString().trim(); adminDomainBlock.private_comment = binding.privateComment.getText().toString().trim(); adminVM.createOrUpdateDomainBlock(MainActivity.currentInstance, MainActivity.currentToken, adminDomainBlock) .observe(AdminDomainBlockActivity.this, adminDomainBlockResult -> { if (adminDomainBlockResult != null) { Toasty.success(AdminDomainBlockActivity.this, getString(R.string.saved_changes), Toasty.LENGTH_SHORT).show(); } else { Toasty.error(AdminDomainBlockActivity.this, getString(R.string.toast_error), Toasty.LENGTH_SHORT).show(); } } ); }); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == android.R.id.home) { finish(); return true; } return true; } }
app/src/main/java/app/fedilab/android/client/endpoints/MastodonAdminService.java +3 −3 Original line number Diff line number Diff line Loading @@ -188,7 +188,7 @@ public interface MastodonAdminService { @POST("admin/domain_blocks") Call<AdminDomainBlock> blockDomain( @Header("Authorization") String app_token, @Path("domain") String domain, @Field("domain") String domain, @Field("severity") String severity, @Field("reject_media") Boolean reject_media, @Field("reject_reports") Boolean reject_reports, Loading @@ -205,10 +205,10 @@ public interface MastodonAdminService { ); @FormUrlEncoded @PUT("admin/domain_blocks") @PUT("admin/domain_blocks/{id}") Call<AdminDomainBlock> updateBlockDomain( @Header("Authorization") String app_token, @Path("domain") String domain, @Path("id") String id, @Field("severity") String severity, @Field("reject_media") Boolean reject_media, @Field("reject_reports") Boolean reject_reports, Loading
app/src/main/java/app/fedilab/android/helper/Helper.java +2 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,8 @@ public class Helper { public static final String ARG_STATUS_REPLY_ID = "ARG_STATUS_REPLY_ID"; public static final String ARG_ACCOUNT = "ARG_ACCOUNT"; public static final String ARG_ACCOUNT_ID = "ARG_ACCOUNT_ID"; public static final String ARG_ADMIN_DOMAINBLOCK = "ARG_ADMIN_DOMAINBLOCK"; public static final String ARG_REPORT = "ARG_REPORT"; public static final String ARG_ACCOUNT_MENTION = "ARG_ACCOUNT_MENTION"; public static final String ARG_MINIFIED = "ARG_MINIFIED"; Loading