Fix visible actions and teams tab (#1112)

Closes #1071

Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1112
Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
Co-authored-by: qwerty287 <qwerty287@noreply.codeberg.org>
Co-committed-by: qwerty287 <qwerty287@noreply.codeberg.org>
This commit is contained in:
qwerty287 2022-04-20 15:46:50 +02:00 committed by M M Arif
parent fbe55035f2
commit 3f7706de23
5 changed files with 126 additions and 75 deletions

View File

@ -48,6 +48,7 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene
private ContentsResponse file;
private RepositoryContext repository;
private boolean renderMd = false;
private boolean processable = false;
public ActivityResultLauncher<Intent> editFileLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
result -> {
@ -108,8 +109,6 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene
runOnUiThread(() -> binding.progressBar.setVisibility(View.GONE));
String fileExtension = FilenameUtils.getExtension(filename);
boolean processable = false;
switch(AppUtil.getFileType(fileExtension)) {
case IMAGE:
@ -246,7 +245,9 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene
} else if(id == R.id.genericMenu) {
BottomSheetFileViewerFragment bottomSheet = new BottomSheetFileViewerFragment();
bottomSheet.setArguments(repository.getBundle());
Bundle opts = repository.getBundle();
opts.putBoolean("editable", processable);
bottomSheet.setArguments(opts);
bottomSheet.show(getSupportFragmentManager(), "fileViewerBottomSheet");
return true;

View File

@ -20,6 +20,7 @@ import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
import org.gitnex.tea4j.v2.models.OrganizationPermissions;
import org.jetbrains.annotations.NotNull;
import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.fragments.BottomSheetOrganizationFragment;
@ -43,6 +44,8 @@ import retrofit2.Response;
public class OrganizationDetailActivity extends BaseActivity implements BottomSheetListener {
public OrganizationPermissions permissions;
private String orgName;
private boolean isMember = false;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -51,89 +54,118 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
setContentView(R.layout.activity_org_detail);
String orgName = getIntent().getStringExtra("orgName");
orgName = getIntent().getStringExtra("orgName");
Toolbar toolbar = findViewById(R.id.toolbar);
TextView toolbarTitle = findViewById(R.id.toolbar_title);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setTitle(orgName);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
OrganizationDetailActivity.SectionsPagerAdapter mSectionsPagerAdapter = new OrganizationDetailActivity.SectionsPagerAdapter(getSupportFragmentManager());
ViewPager mViewPager = findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = findViewById(R.id.tabs);
Typeface myTypeface;
switch(tinyDB.getInt("customFontId", -1)) {
case 0:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/roboto.ttf");
break;
case 2:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/sourcecodeproregular.ttf");
break;
default:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/manroperegular.ttf");
break;
}
toolbarTitle.setTypeface(myTypeface);
toolbarTitle.setText(orgName);
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildCount = vgTab.getChildCount();
for (int i = 0; i < tabChildCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(myTypeface);
}
}
}
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
checkIsMember();
if(getAccount().requiresVersion("1.16.0")) {
RetrofitClient.getApiInterface(this)
.orgGetUserPermissions(getAccount().getAccount().getUserName(), orgName).enqueue(new Callback<OrganizationPermissions>() {
.orgGetUserPermissions(getAccount().getAccount().getUserName(), orgName).enqueue(new Callback<>() {
@Override
public void onResponse(@NonNull Call<OrganizationPermissions> call, @NonNull Response<OrganizationPermissions> response) {
if(response.isSuccessful()) {
permissions = response.body();
}
else {
permissions = null;
}
}
@Override
public void onResponse(@NonNull Call<OrganizationPermissions> call, @NonNull Response<OrganizationPermissions> response) {
@Override
public void onFailure(@NonNull Call<OrganizationPermissions> call, @NonNull Throwable t) {
permissions = null;
}
});
if(response.isSuccessful()) {
permissions = response.body();
}
else {
permissions = null;
}
}
@Override
public void onFailure(@NonNull Call<OrganizationPermissions> call, @NonNull Throwable t) {
permissions = null;
}
});
} else {
permissions = null;
}
}
public void checkIsMember() {
RetrofitClient.getApiInterface(this).orgIsMember(orgName, getAccount().getAccount().getUserName()).enqueue(new Callback<>() {
@Override
public void onResponse(@NotNull Call<Void> call, @NotNull Response<Void> response) {
isMember = response.code() != 404;
init();
}
@Override
public void onFailure(@NotNull Call<Void> call, @NotNull Throwable t) {
isMember = false;
init();
}
});
}
public void init() {
OrganizationDetailActivity.SectionsPagerAdapter mSectionsPagerAdapter = new OrganizationDetailActivity.SectionsPagerAdapter(getSupportFragmentManager());
ViewPager mViewPager = findViewById(R.id.container);
mViewPager.setVisibility(View.VISIBLE);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = findViewById(R.id.tabs);
tabLayout.setVisibility(View.VISIBLE);
if(!isMember) {
tabLayout.removeTabAt(3);
}
Typeface myTypeface;
switch(tinyDB.getInt("customFontId", -1)) {
case 0:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/roboto.ttf");
break;
case 2:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/sourcecodeproregular.ttf");
break;
default:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/manroperegular.ttf");
break;
}
TextView toolbarTitle = findViewById(R.id.toolbar_title);
toolbarTitle.setTypeface(myTypeface);
toolbarTitle.setText(orgName);
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildCount = vgTab.getChildCount();
for (int i = 0; i < tabChildCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(myTypeface);
}
}
}
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
@ -226,19 +258,29 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
case 2: // labels
return OrganizationLabelsFragment.newInstance(orgName);
case 3: // teams
case 3: // teams / members
return TeamsByOrgFragment.newInstance(orgName, permissions);
if(isMember) {
return TeamsByOrgFragment.newInstance(orgName, permissions);
} else {
return MembersByOrgFragment.newInstance(orgName);
}
case 4: // members
return MembersByOrgFragment.newInstance(orgName);
if(isMember) {
return MembersByOrgFragment.newInstance(orgName);
}
}
return fragment;
}
@Override
public int getCount() {
return 5;
if(isMember) {
return 5;
} else {
return 4;
}
}
}
}

View File

@ -30,6 +30,8 @@ public class BottomSheetFileViewerFragment extends BottomSheetDialogFragment {
if(!repository.getPermissions().isPush()) {
bottomSheetFileViewerBinding.deleteFile.setVisibility(View.GONE);
bottomSheetFileViewerBinding.editFile.setVisibility(View.GONE);
} else if(!requireArguments().getBoolean("editable")) {
bottomSheetFileViewerBinding.editFile.setVisibility(View.GONE);
}
bottomSheetFileViewerBinding.downloadFile.setOnClickListener(v1 -> {

View File

@ -264,6 +264,10 @@ public class BottomSheetSingleIssueFragment extends BottomSheetDialogFragment {
binding.commentReactionButtons.setVisibility(View.GONE);
binding.shareDivider.setVisibility(View.GONE);
}
else if(!canPush) {
binding.addRemoveAssignees.setVisibility(View.GONE);
binding.editLabels.setVisibility(View.GONE);
}
return binding.getRoot();
}

View File

@ -43,7 +43,8 @@
android:background="?attr/primaryBackgroundColor"
app:tabIndicatorColor="?attr/pagerTabIndicatorColor"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:visibility="gone">
<com.google.android.material.tabs.TabItem
android:id="@+id/tabItemInfo"
@ -83,6 +84,7 @@
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:visibility="gone"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>