1
0
mirror of https://codeberg.org/gitnex/GitNex synced 2025-03-10 00:20:16 +01:00

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

View File

@ -20,6 +20,7 @@ import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import org.gitnex.tea4j.v2.models.OrganizationPermissions; import org.gitnex.tea4j.v2.models.OrganizationPermissions;
import org.jetbrains.annotations.NotNull;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.fragments.BottomSheetOrganizationFragment; import org.mian.gitnex.fragments.BottomSheetOrganizationFragment;
@ -43,6 +44,8 @@ import retrofit2.Response;
public class OrganizationDetailActivity extends BaseActivity implements BottomSheetListener { public class OrganizationDetailActivity extends BaseActivity implements BottomSheetListener {
public OrganizationPermissions permissions; public OrganizationPermissions permissions;
private String orgName;
private boolean isMember = false;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -51,21 +54,72 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
setContentView(R.layout.activity_org_detail); setContentView(R.layout.activity_org_detail);
String orgName = getIntent().getStringExtra("orgName"); orgName = getIntent().getStringExtra("orgName");
Toolbar toolbar = findViewById(R.id.toolbar); Toolbar toolbar = findViewById(R.id.toolbar);
TextView toolbarTitle = findViewById(R.id.toolbar_title);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setTitle(orgName); Objects.requireNonNull(getSupportActionBar()).setTitle(orgName);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
checkIsMember();
if(getAccount().requiresVersion("1.16.0")) {
RetrofitClient.getApiInterface(this)
.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 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()); OrganizationDetailActivity.SectionsPagerAdapter mSectionsPagerAdapter = new OrganizationDetailActivity.SectionsPagerAdapter(getSupportFragmentManager());
ViewPager mViewPager = findViewById(R.id.container); ViewPager mViewPager = findViewById(R.id.container);
mViewPager.setVisibility(View.VISIBLE);
mViewPager.setAdapter(mSectionsPagerAdapter); mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = findViewById(R.id.tabs); TabLayout tabLayout = findViewById(R.id.tabs);
tabLayout.setVisibility(View.VISIBLE);
if(!isMember) {
tabLayout.removeTabAt(3);
}
Typeface myTypeface; Typeface myTypeface;
@ -85,6 +139,8 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
break; break;
} }
TextView toolbarTitle = findViewById(R.id.toolbar_title);
toolbarTitle.setTypeface(myTypeface); toolbarTitle.setTypeface(myTypeface);
toolbarTitle.setText(orgName); toolbarTitle.setText(orgName);
@ -109,31 +165,7 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
if(getAccount().requiresVersion("1.16.0")) {
RetrofitClient.getApiInterface(this)
.orgGetUserPermissions(getAccount().getAccount().getUserName(), orgName).enqueue(new Callback<OrganizationPermissions>() {
@Override
public void onResponse(@NonNull Call<OrganizationPermissions> call, @NonNull Response<OrganizationPermissions> response) {
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;
}
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
@ -226,19 +258,29 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
case 2: // labels case 2: // labels
return OrganizationLabelsFragment.newInstance(orgName); return OrganizationLabelsFragment.newInstance(orgName);
case 3: // teams case 3: // teams / members
if(isMember) {
return TeamsByOrgFragment.newInstance(orgName, permissions); return TeamsByOrgFragment.newInstance(orgName, permissions);
} else {
return MembersByOrgFragment.newInstance(orgName);
}
case 4: // members case 4: // members
if(isMember) {
return MembersByOrgFragment.newInstance(orgName); return MembersByOrgFragment.newInstance(orgName);
} }
}
return fragment; return fragment;
} }
@Override @Override
public int getCount() { public int getCount() {
if(isMember) {
return 5; return 5;
} else {
return 4;
}
} }
} }
} }

View File

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

View File

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

View File

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