Skip to content
Snippets Groups Projects
Commit c265a2ab authored by Michi302's avatar Michi302
Browse files

Merge branch 'master' into fdroid

# Conflicts:
#	.magnum.yml
#	.travis.yml
#	README.md
#	app/build.gradle
#	app/src/main/AndroidManifest.xml
#	app/src/main/java/com/commit451/gitlab/LabCoatApp.java
#	build.gradle
parents 1b90c181 16caa78a
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 872 additions and 181 deletions
Loading
Loading
@@ -26,28 +26,27 @@ import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.event.ProjectReloadEvent;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.model.api.RepositoryTreeObject;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.IntentUtil;
import com.commit451.gitlab.util.NavigationManager;
import com.squareup.otto.Subscribe;
 
import java.util.ArrayList;
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import timber.log.Timber;
 
public class FilesFragment extends BaseFragment {
public class FilesFragment extends ButterKnifeFragment {
 
public static FilesFragment newInstance() {
return new FilesFragment();
}
 
@Bind(R.id.root) View mRoot;
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list) RecyclerView mFilesListView;
@Bind(R.id.breadcrumb) RecyclerView mBreadcrumbListView;
@Bind(R.id.message_text) TextView mMessageView;
@BindView(R.id.root) View mRoot;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list) RecyclerView mFilesListView;
@BindView(R.id.breadcrumb) RecyclerView mBreadcrumbListView;
@BindView(R.id.message_text) TextView mMessageView;
 
private Project mProject;
private String mBranchName;
Loading
Loading
@@ -140,7 +139,6 @@ public class FilesFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -173,7 +171,6 @@ public class FilesFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
Loading
Loading
@@ -20,7 +20,7 @@ import com.commit451.gitlab.dialog.AccessDialog;
import com.commit451.gitlab.event.MemberAddedEvent;
import com.commit451.gitlab.model.api.Group;
import com.commit451.gitlab.model.api.Member;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.viewHolder.ProjectMemberViewHolder;
import com.squareup.otto.Subscribe;
 
Loading
Loading
@@ -28,12 +28,11 @@ import org.parceler.Parcels;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import butterknife.OnClick;
import timber.log.Timber;
 
public class GroupMembersFragment extends BaseFragment {
public class GroupMembersFragment extends ButterKnifeFragment {
 
private static final String KEY_GROUP = "group";
 
Loading
Loading
@@ -46,11 +45,11 @@ public class GroupMembersFragment extends BaseFragment {
return fragment;
}
 
@Bind(R.id.root) View mRoot;
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list) RecyclerView mRecyclerView;
@Bind(R.id.message_text) TextView mMessageView;
@Bind(R.id.add_user_button) View mAddUserButton;
@BindView(R.id.root) View mRoot;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list) RecyclerView mRecyclerView;
@BindView(R.id.message_text) TextView mMessageView;
@BindView(R.id.add_user_button) View mAddUserButton;
 
private Group mGroup;
private EventReceiver mEventReceiver;
Loading
Loading
@@ -147,7 +146,6 @@ public class GroupMembersFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -169,7 +167,6 @@ public class GroupMembersFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
Loading
Loading
@@ -28,32 +28,31 @@ import com.commit451.gitlab.event.IssueReloadEvent;
import com.commit451.gitlab.event.ProjectReloadEvent;
import com.commit451.gitlab.model.api.Issue;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.PaginationUtil;
import com.squareup.otto.Subscribe;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import butterknife.OnClick;
import timber.log.Timber;
 
public class IssuesFragment extends BaseFragment {
public class IssuesFragment extends ButterKnifeFragment {
 
public static IssuesFragment newInstance() {
return new IssuesFragment();
}
 
@Bind(R.id.root)
@BindView(R.id.root)
ViewGroup mRoot;
@Bind(R.id.swipe_layout)
@BindView(R.id.swipe_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list)
@BindView(R.id.list)
RecyclerView mIssueListView;
@Bind(R.id.message_text)
@BindView(R.id.message_text)
TextView mMessageView;
@Bind(R.id.issue_spinner)
@BindView(R.id.issue_spinner)
Spinner mSpinner;
 
private Project mProject;
Loading
Loading
@@ -167,7 +166,6 @@ public class IssuesFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -200,7 +198,6 @@ public class IssuesFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
Loading
Loading
@@ -11,28 +11,30 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
 
import com.commit451.gitlab.LabCoatApp;
import com.commit451.gitlab.R;
import com.commit451.gitlab.adapter.CommitsAdapter;
import com.commit451.gitlab.adapter.DividerItemDecoration;
import com.commit451.gitlab.api.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.event.MergeRequestChangedEvent;
import com.commit451.gitlab.model.api.MergeRequest;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.model.api.RepositoryCommit;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.squareup.otto.Subscribe;
 
import org.parceler.Parcels;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import timber.log.Timber;
 
/**
* Like {@link CommitsFragment} but showing commits for a merge request
*/
public class MergeRequestCommitsFragment extends BaseFragment {
public class MergeRequestCommitsFragment extends ButterKnifeFragment {
 
private static final String KEY_PROJECT = "project";
private static final String KEY_MERGE_REQUEST = "merge_request";
Loading
Loading
@@ -46,9 +48,9 @@ public class MergeRequestCommitsFragment extends BaseFragment {
return fragment;
}
 
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list) RecyclerView mCommitsListView;
@Bind(R.id.message_text) TextView mMessageView;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list) RecyclerView mCommitsListView;
@BindView(R.id.message_text) TextView mMessageView;
 
private Project mProject;
private MergeRequest mMergeRequest;
Loading
Loading
@@ -57,6 +59,8 @@ public class MergeRequestCommitsFragment extends BaseFragment {
private int mPage = -1;
private boolean mLoading = false;
 
EventReceiver mEventReceiver;
private final RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
Loading
Loading
@@ -147,7 +151,6 @@ public class MergeRequestCommitsFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mCommitsAdapter = new CommitsAdapter(mCommitsAdapterListener);
mCommitsLayoutManager = new LinearLayoutManager(getActivity());
Loading
Loading
@@ -163,12 +166,14 @@ public class MergeRequestCommitsFragment extends BaseFragment {
}
});
loadData();
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
}
 
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
@Override
Loading
Loading
@@ -204,4 +209,15 @@ public class MergeRequestCommitsFragment extends BaseFragment {
Timber.d("loadMore called for %s", mPage);
//TODO is this even a thing?
}
private class EventReceiver {
@Subscribe
public void onMergeRequestChangedEvent(MergeRequestChangedEvent event) {
if (mMergeRequest.getId() == event.mergeRequest.getId()) {
mMergeRequest = event.mergeRequest;
loadData();
}
}
}
}
\ No newline at end of file
Loading
Loading
@@ -8,36 +8,35 @@ import android.support.design.widget.Snackbar;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
 
import com.commit451.gitlab.LabCoatApp;
import com.commit451.gitlab.R;
import com.commit451.gitlab.adapter.MergeRequestDetailAdapter;
import com.commit451.gitlab.api.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.event.MergeRequestChangedEvent;
import com.commit451.gitlab.model.api.MergeRequest;
import com.commit451.gitlab.model.api.Note;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.util.KeyboardUtil;
import com.commit451.gitlab.util.PaginationUtil;
import com.commit451.gitlab.view.SendMessageView;
import com.commit451.teleprinter.Teleprinter;
import com.squareup.otto.Subscribe;
 
import org.parceler.Parcels;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.BindView;
import timber.log.Timber;
 
/**
* Shows the discussion of a merge request
*/
public class MergeRequestDiscussionFragment extends BaseFragment {
public class MergeRequestDiscussionFragment extends ButterKnifeFragment {
 
private static final String KEY_PROJECT = "project";
private static final String KEY_MERGE_REQUEST = "merge_request";
Loading
Loading
@@ -51,15 +50,15 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
return fragment;
}
 
@Bind(R.id.root)
@BindView(R.id.root)
ViewGroup mRoot;
@Bind(R.id.swipe_layout)
@BindView(R.id.swipe_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list)
@BindView(R.id.list)
RecyclerView mNotesRecyclerView;
@Bind(R.id.new_note_edit)
EditText mNewNoteEdit;
@Bind(R.id.progress)
@BindView(R.id.send_message_view)
SendMessageView mSendMessageView;
@BindView(R.id.progress)
View mProgress;
 
MergeRequestDetailAdapter mMergeRequestDetailAdapter;
Loading
Loading
@@ -69,11 +68,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
MergeRequest mMergeRequest;
Uri mNextPageUrl;
boolean mLoading;
Teleprinter mTeleprinter;
 
@OnClick(R.id.new_note_button)
public void onNewNoteClick() {
postNote();
}
EventReceiver mEventReceiver;
 
private final RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
@Override
Loading
Loading
@@ -92,6 +89,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
 
@Override
public void onResponse(@NonNull List<Note> response) {
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
mLoading = false;
mNextPageUrl = PaginationUtil.parse(getResponse()).getNext();
Loading
Loading
@@ -102,6 +102,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
public void onAllFailure(Throwable t) {
mLoading = false;
Timber.e(t, null);
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
Snackbar.make(mRoot, getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
.show();
Loading
Loading
@@ -112,6 +115,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
 
@Override
public void onResponse(@NonNull List<Note> response) {
if (getView() == null) {
return;
}
mMergeRequestDetailAdapter.setLoading(false);
mLoading = false;
mNextPageUrl = PaginationUtil.parse(getResponse()).getNext();
Loading
Loading
@@ -120,6 +126,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
 
@Override
public void onAllFailure(Throwable t) {
if (getView() == null) {
return;
}
mLoading = false;
Timber.e(t, null);
mMergeRequestDetailAdapter.setLoading(false);
Loading
Loading
@@ -132,6 +141,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
 
@Override
public void onResponse(@NonNull Note response) {
if (getView() == null) {
return;
}
mProgress.setVisibility(View.GONE);
mMergeRequestDetailAdapter.addNote(response);
mNotesRecyclerView.smoothScrollToPosition(MergeRequestDetailAdapter.getHeaderCount());
Loading
Loading
@@ -139,6 +151,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
 
@Override
public void onAllFailure(Throwable t) {
if (getView() == null) {
return;
}
Timber.e(t, null);
mProgress.setVisibility(View.GONE);
Snackbar.make(mRoot, getString(R.string.connection_error), Snackbar.LENGTH_SHORT)
Loading
Loading
@@ -161,7 +176,7 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
mTeleprinter = new Teleprinter(getActivity());
 
mMergeRequestDetailAdapter = new MergeRequestDetailAdapter(getActivity(), mMergeRequest);
mNotesLinearLayoutManager = new LinearLayoutManager(getActivity());
Loading
Loading
@@ -169,11 +184,20 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
mNotesRecyclerView.setAdapter(mMergeRequestDetailAdapter);
mNotesRecyclerView.addOnScrollListener(mOnScrollListener);
 
mNewNoteEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
mSendMessageView.setCallbacks(new SendMessageView.Callbacks() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
postNote();
return true;
public void onSendClicked(String message) {
postNote(message);
}
@Override
public void onGalleryClicked() {
}
@Override
public void onCameraClicked() {
}
});
 
Loading
Loading
@@ -184,6 +208,15 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
}
});
loadNotes();
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
}
@Override
public void onDestroyView() {
super.onDestroyView();
LabCoatApp.bus().unregister(mEventReceiver);
}
 
private void loadNotes() {
Loading
Loading
@@ -203,10 +236,9 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
GitLabClient.instance().getMergeRequestNotes(mNextPageUrl.toString()).enqueue(mMoreNotesCallback);
}
 
private void postNote() {
String body = mNewNoteEdit.getText().toString();
private void postNote(String message) {
 
if (body.length() < 1) {
if (message.length() < 1) {
return;
}
 
Loading
Loading
@@ -214,10 +246,21 @@ public class MergeRequestDiscussionFragment extends BaseFragment {
mProgress.setAlpha(0.0f);
mProgress.animate().alpha(1.0f);
// Clear text & collapse keyboard
KeyboardUtil.hideKeyboard(getActivity());
mNewNoteEdit.setText("");
mTeleprinter.hideKeyboard();
mSendMessageView.clearText();
 
GitLabClient.instance().addMergeRequestNote(mProject.getId(), mMergeRequest.getId(), body).enqueue(mPostNoteCallback);
GitLabClient.instance().addMergeRequestNote(mProject.getId(), mMergeRequest.getId(), message).enqueue(mPostNoteCallback);
}
private class EventReceiver {
@Subscribe
public void onMergeRequestChangedEvent(MergeRequestChangedEvent event) {
if (mMergeRequest.getId() == event.mergeRequest.getId()) {
mMergeRequest = event.mergeRequest;
loadNotes();
}
}
}
 
}
Loading
Loading
@@ -24,26 +24,25 @@ import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.event.ProjectReloadEvent;
import com.commit451.gitlab.model.api.MergeRequest;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.PaginationUtil;
import com.squareup.otto.Subscribe;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import timber.log.Timber;
 
public class MergeRequestsFragment extends BaseFragment {
public class MergeRequestsFragment extends ButterKnifeFragment {
 
public static MergeRequestsFragment newInstance() {
return new MergeRequestsFragment();
}
 
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list) RecyclerView mRecyclerView;
@Bind(R.id.message_text) TextView mMessageView;
@Bind(R.id.state_spinner) Spinner mSpinner;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list) RecyclerView mRecyclerView;
@BindView(R.id.message_text) TextView mMessageView;
@BindView(R.id.state_spinner) Spinner mSpinner;
 
private Project mProject;
private EventReceiver mEventReceiver;
Loading
Loading
@@ -150,7 +149,6 @@ public class MergeRequestsFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -183,7 +181,6 @@ public class MergeRequestsFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
Loading
Loading
@@ -27,32 +27,31 @@ import com.commit451.gitlab.event.MilestoneCreatedEvent;
import com.commit451.gitlab.event.ProjectReloadEvent;
import com.commit451.gitlab.model.api.Milestone;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.PaginationUtil;
import com.squareup.otto.Subscribe;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import butterknife.OnClick;
import timber.log.Timber;
 
public class MilestonesFragment extends BaseFragment {
public class MilestonesFragment extends ButterKnifeFragment {
 
public static MilestonesFragment newInstance() {
return new MilestonesFragment();
}
 
@Bind(R.id.root)
@BindView(R.id.root)
ViewGroup mRoot;
@Bind(R.id.swipe_layout)
@BindView(R.id.swipe_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list)
@BindView(R.id.list)
RecyclerView mRecyclerView;
@Bind(R.id.message_text)
@BindView(R.id.message_text)
TextView mMessageView;
@Bind(R.id.state_spinner)
@BindView(R.id.state_spinner)
Spinner mSpinner;
 
private Project mProject;
Loading
Loading
@@ -171,7 +170,6 @@ public class MilestonesFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -204,7 +202,6 @@ public class MilestonesFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
Loading
Loading
@@ -3,48 +3,61 @@ package com.commit451.gitlab.fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v4.widget.SwipeRefreshLayout;
import android.text.Html;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.util.Base64;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
 
import com.commit451.bypasspicassoimagegetter.BypassPicassoImageGetter;
import com.commit451.gitlab.LabCoatApp;
import com.commit451.gitlab.R;
import com.commit451.gitlab.activity.ProjectActivity;
import com.commit451.gitlab.api.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.api.exception.HttpException;
import com.commit451.gitlab.event.ProjectReloadEvent;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.model.api.RepositoryFile;
import com.commit451.gitlab.model.api.RepositoryTreeObject;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.util.PicassoImageGetter;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.observable.DecodeObservableFactory;
import com.squareup.otto.Subscribe;
 
import java.nio.charset.Charset;
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import butterknife.OnClick;
import in.uncod.android.bypass.Bypass;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;
 
public class OverviewFragment extends BaseFragment {
/**
* Shows the overview of the project
*/
public class ProjectFragment extends ButterKnifeFragment {
 
public static OverviewFragment newInstance() {
return new OverviewFragment();
private static final int README_TYPE_UNKNOWN = -1;
private static final int README_TYPE_MARKDOWN = 0;
private static final int README_TYPE_TEXT = 1;
private static final int README_TYPE_HTML = 2;
private static final int README_TYPE_NO_EXTENSION = 3;
public static ProjectFragment newInstance() {
return new ProjectFragment();
}
 
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.creator) TextView mCreatorView;
@Bind(R.id.star_count) TextView mStarCountView;
@Bind(R.id.forks_count) TextView mForksCountView;
@Bind(R.id.overview_text) TextView mOverviewVew;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.creator) TextView mCreatorView;
@BindView(R.id.star_count) TextView mStarCountView;
@BindView(R.id.forks_count) TextView mForksCountView;
@BindView(R.id.overview_text) TextView mOverviewVew;
 
private Project mProject;
private String mBranchName;
Loading
Loading
@@ -62,6 +75,20 @@ public class OverviewFragment extends BaseFragment {
}
}
 
@OnClick(R.id.root_fork)
void onForkClicked() {
if (mProject != null) {
GitLabClient.instance().forkProject(mProject.getId()).enqueue(mForkCallback);
}
}
@OnClick(R.id.root_star)
void onStarClicked() {
if (mProject != null) {
GitLabClient.instance().starProject(mProject.getId()).enqueue(mStarCallback);
}
}
private final EasyCallback<List<RepositoryTreeObject>> mFilesCallback = new EasyCallback<List<RepositoryTreeObject>>() {
@Override
public void onResponse(@NonNull List<RepositoryTreeObject> response) {
Loading
Loading
@@ -69,7 +96,7 @@ public class OverviewFragment extends BaseFragment {
return;
}
for (RepositoryTreeObject treeItem : response) {
if (treeItem.getName().equalsIgnoreCase("README.md")) {
if (getReadmeType(treeItem.getName()) != README_TYPE_UNKNOWN) {
GitLabClient.instance().getFile(mProject.getId(), treeItem.getName(), mBranchName).enqueue(mFileCallback);
return;
}
Loading
Loading
@@ -91,14 +118,44 @@ public class OverviewFragment extends BaseFragment {
 
private EasyCallback<RepositoryFile> mFileCallback = new EasyCallback<RepositoryFile>() {
@Override
public void onResponse(@NonNull RepositoryFile response) {
public void onResponse(@NonNull final RepositoryFile response) {
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
String text = new String(Base64.decode(response.getContent(), Base64.DEFAULT), Charset.forName("UTF-8"));
mOverviewVew.setText(mBypass.markdownToSpannable(text,
new PicassoImageGetter(mOverviewVew, GitLabClient.getPicasso())));
DecodeObservableFactory.newDecode(response.getContent())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<byte[]>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {
Snackbar.make(mSwipeRefreshLayout, R.string.failed_to_load, Snackbar.LENGTH_SHORT)
.show();
}
@Override
public void onNext(byte[] bytes) {
String text = new String(bytes);
switch (getReadmeType(response.getFileName())) {
case README_TYPE_MARKDOWN:
mOverviewVew.setText(mBypass.markdownToSpannable(text,
new BypassPicassoImageGetter(mOverviewVew, GitLabClient.getPicasso())));
break;
case README_TYPE_HTML:
mOverviewVew.setText(Html.fromHtml(text));
break;
case README_TYPE_TEXT:
mOverviewVew.setText(text);
break;
case README_TYPE_NO_EXTENSION:
mOverviewVew.setText(text);
break;
}
}
});
}
 
@Override
Loading
Loading
@@ -112,6 +169,79 @@ public class OverviewFragment extends BaseFragment {
}
};
 
private EasyCallback<Void> mForkCallback = new EasyCallback<Void>() {
@Override
public void onResponse(@NonNull Void response) {
if (getView() == null) {
return;
}
Snackbar.make(mSwipeRefreshLayout, R.string.project_forked, Snackbar.LENGTH_SHORT)
.show();
}
@Override
public void onAllFailure(Throwable t) {
if (getView() == null) {
return;
}
Snackbar.make(mSwipeRefreshLayout, R.string.fork_failed, Snackbar.LENGTH_SHORT)
.show();
}
};
private EasyCallback<Project> mStarCallback = new EasyCallback<Project>() {
@Override
public void onResponse(@NonNull Project response) {
if (getView() == null) {
return;
}
Snackbar.make(mSwipeRefreshLayout, R.string.project_starred, Snackbar.LENGTH_SHORT)
.show();
}
@Override
public void onAllFailure(Throwable t) {
if (getView() == null) {
return;
}
if (t instanceof HttpException) {
if (((HttpException) t).getCode() == 304) {
Snackbar.make(mSwipeRefreshLayout, R.string.project_already_starred, Snackbar.LENGTH_SHORT)
.setAction(R.string.project_unstar, new View.OnClickListener() {
@Override
public void onClick(View v) {
GitLabClient.instance().unstarProject(mProject.getId()).enqueue(mUnstarProjectCallback);
}
})
.show();
return;
}
}
Snackbar.make(mSwipeRefreshLayout, R.string.project_star_failed, Snackbar.LENGTH_SHORT)
.show();
}
};
private EasyCallback<Project> mUnstarProjectCallback = new EasyCallback<Project>() {
@Override
public void onResponse(@NonNull Project response) {
if (getView() == null) {
return;
}
Snackbar.make(mSwipeRefreshLayout, R.string.project_unstarred, Snackbar.LENGTH_SHORT)
.show();
}
@Override
public void onAllFailure(Throwable t) {
if (getView() == null) {
return;
}
Snackbar.make(mSwipeRefreshLayout, R.string.unstar_failed, Snackbar.LENGTH_SHORT)
.show();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Loading
Loading
@@ -121,13 +251,12 @@ public class OverviewFragment extends BaseFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_overview, container, false);
return inflater.inflate(R.layout.fragment_project, container, false);
}
 
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -154,7 +283,6 @@ public class OverviewFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
@@ -195,6 +323,21 @@ public class OverviewFragment extends BaseFragment {
mForksCountView.setText(String.valueOf(project.getForksCount()));
}
 
private int getReadmeType(String filename) {
switch (filename.toLowerCase()) {
case "readme.md":
return README_TYPE_MARKDOWN;
case "readme.html":
case "readme.htm":
return README_TYPE_HTML;
case "readme.txt":
return README_TYPE_TEXT;
case "readme":
return README_TYPE_NO_EXTENSION;
}
return README_TYPE_UNKNOWN;
}
private class EventReceiver {
@Subscribe
public void onProjectReload(ProjectReloadEvent event) {
Loading
Loading
Loading
Loading
@@ -24,29 +24,28 @@ import com.commit451.gitlab.event.MemberAddedEvent;
import com.commit451.gitlab.event.ProjectReloadEvent;
import com.commit451.gitlab.model.api.Member;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.PaginationUtil;
import com.commit451.gitlab.viewHolder.ProjectMemberViewHolder;
import com.squareup.otto.Subscribe;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import butterknife.OnClick;
import timber.log.Timber;
 
public class ProjectMembersFragment extends BaseFragment {
public class ProjectMembersFragment extends ButterKnifeFragment {
 
public static ProjectMembersFragment newInstance() {
return new ProjectMembersFragment();
}
 
@Bind(R.id.root) View mRoot;
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list) RecyclerView mMembersListView;
@Bind(R.id.message_text) TextView mMessageView;
@Bind(R.id.add_user_button) FloatingActionButton mAddUserButton;
@BindView(R.id.root) View mRoot;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list) RecyclerView mMembersListView;
@BindView(R.id.message_text) TextView mMessageView;
@BindView(R.id.add_user_button) FloatingActionButton mAddUserButton;
 
private Project mProject;
private EventReceiver mEventReceiver;
Loading
Loading
@@ -173,7 +172,6 @@ public class ProjectMembersFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -204,7 +202,6 @@ public class ProjectMembersFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
Loading
Loading
@@ -18,18 +18,17 @@ import com.commit451.gitlab.api.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Group;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.PaginationUtil;
 
import org.parceler.Parcels;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import timber.log.Timber;
 
public class ProjectsFragment extends BaseFragment {
public class ProjectsFragment extends ButterKnifeFragment {
 
private static final String EXTRA_MODE = "extra_mode";
private static final String EXTRA_QUERY = "extra_query";
Loading
Loading
@@ -68,9 +67,9 @@ public class ProjectsFragment extends BaseFragment {
return fragment;
}
 
@Bind(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list) RecyclerView mProjectsListView;
@Bind(R.id.message_text) TextView mMessageView;
@BindView(R.id.swipe_layout) SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list) RecyclerView mProjectsListView;
@BindView(R.id.message_text) TextView mMessageView;
 
private LinearLayoutManager mLayoutManager;
private ProjectsAdapter mProjectsAdapter;
Loading
Loading
@@ -172,7 +171,6 @@ public class ProjectsFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mProjectsAdapter = new ProjectsAdapter(getActivity(), mProjectsListener);
mLayoutManager = new LinearLayoutManager(getActivity());
Loading
Loading
@@ -191,12 +189,6 @@ public class ProjectsFragment extends BaseFragment {
loadData();
}
 
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
@Override
protected void loadData() {
if (getView() == null) {
Loading
Loading
@@ -265,10 +257,11 @@ public class ProjectsFragment extends BaseFragment {
}
 
public void searchQuery(String query) {
mQuery = query;
if (mProjectsAdapter != null) {
mProjectsAdapter.clearData();
loadData();
}
mQuery = query;
loadData();
}
}
Loading
Loading
@@ -19,17 +19,16 @@ import com.commit451.gitlab.adapter.UsersAdapter;
import com.commit451.gitlab.api.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.UserBasic;
import com.commit451.gitlab.util.NavigationManager;
import com.commit451.gitlab.navigation.NavigationManager;
import com.commit451.gitlab.util.PaginationUtil;
import com.commit451.gitlab.viewHolder.UserViewHolder;
 
import java.util.List;
 
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.BindView;
import timber.log.Timber;
 
public class UsersFragment extends BaseFragment {
public class UsersFragment extends ButterKnifeFragment {
 
private static final String EXTRA_QUERY = "extra_query";
 
Loading
Loading
@@ -50,11 +49,11 @@ public class UsersFragment extends BaseFragment {
return fragment;
}
 
@Bind(R.id.swipe_layout)
@BindView(R.id.swipe_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.list)
@BindView(R.id.list)
RecyclerView mUsersListView;
@Bind(R.id.message_text)
@BindView(R.id.message_text)
TextView mMessageView;
private GridLayoutManager mUserLinearLayoutManager;
 
Loading
Loading
@@ -152,7 +151,6 @@ public class UsersFragment extends BaseFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
 
mEventReceiver = new EventReceiver();
LabCoatApp.bus().register(mEventReceiver);
Loading
Loading
@@ -177,7 +175,6 @@ public class UsersFragment extends BaseFragment {
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
LabCoatApp.bus().unregister(mEventReceiver);
}
 
Loading
Loading
@@ -214,9 +211,12 @@ public class UsersFragment extends BaseFragment {
}
 
public void searchQuery(String query) {
mUsersAdapter.clearData();
mQuery = query;
loadData();
if (mUsersAdapter != null) {
mUsersAdapter.clearData();
loadData();
}
}
 
private class EventReceiver {
Loading
Loading
package com.commit451.gitlab.model.api;
import com.google.gson.annotations.SerializedName;
import org.parceler.Parcel;
/**
* Artifact from a build
*/
@Parcel
public class Artifact {
@SerializedName("name")
String mName;
public String getName() {
return mName;
}
}
package com.commit451.gitlab.model.api;
import com.google.gson.annotations.SerializedName;
import org.parceler.Parcel;
import java.util.Date;
/**
* Represents a build
*/
@Parcel
public class Build {
@SerializedName("commit")
RepositoryCommit mCommit;
@SerializedName("coverage")
String mCoverage;
@SerializedName("created_at")
Date mCreatedAt;
@SerializedName("artifacts_file")
String mArtifactsFile;
@SerializedName("finished_at")
Date mFinishedAt;
@SerializedName("id")
long mId;
@SerializedName("name")
String mName;
@SerializedName("ref")
String mRef;
@SerializedName("runner")
Runner mRunner;
@SerializedName("stage")
String mStage;
@SerializedName("started_at")
Date mStartedAt;
@SerializedName("status")
String mStatus;
@SerializedName("tag")
boolean mTag;
@SerializedName("user")
User mUser;
public RepositoryCommit getCommit() {
return mCommit;
}
public String getCoverage() {
return mCoverage;
}
public Date getCreatedAt() {
return mCreatedAt;
}
public String getArtifactsFile() {
return mArtifactsFile;
}
public Date getFinishedAt() {
return mFinishedAt;
}
public long getId() {
return mId;
}
public String getName() {
return mName;
}
public String getRef() {
return mRef;
}
public Runner getRunner() {
return mRunner;
}
public String getStage() {
return mStage;
}
public Date getStartedAt() {
return mStartedAt;
}
public String getStatus() {
return mStatus;
}
public boolean isTag() {
return mTag;
}
public User getUser() {
return mUser;
}
}
package com.commit451.gitlab.model.api;
import com.google.gson.annotations.SerializedName;
import org.parceler.Parcel;
/**
* Response when a file is uploaded
*/
@Parcel
public class FileUploadResponse {
@SerializedName("alt")
protected String mAlt;
@SerializedName("url")
protected String mUrl;
@SerializedName("is_image")
protected boolean mIsImage;
@SerializedName("markdown")
protected String mMarkdown;
protected FileUploadResponse() {
//for json
}
public String getAlt() {
return mAlt;
}
public String getUrl() {
return mUrl;
}
public boolean isImage() {
return mIsImage;
}
public String getMarkdown() {
return mMarkdown;
}
}
Loading
Loading
@@ -48,7 +48,7 @@ public class Project {
boolean mMergeRequestsEnabled;
@SerializedName("wiki_enabled")
boolean mWikiEnabled;
@SerializedName("build_enabled")
@SerializedName("builds_enabled")
boolean mBuildEnabled;
@SerializedName("snippets_enabled")
boolean mSnippetsEnabled;
Loading
Loading
package com.commit451.gitlab.model.api;
import com.google.gson.annotations.SerializedName;
import org.parceler.Parcel;
/**
* A runner. It runs builds. yeah
*/
@Parcel
public class Runner {
@SerializedName("id")
long mId;
@SerializedName("description")
String mDescription;
@SerializedName("active")
boolean mActive;
@SerializedName("is_shared")
boolean mIsShared;
@SerializedName("name")
String mName;
public long getId() {
return mId;
}
public String getDescription() {
return mDescription;
}
public boolean isActive() {
return mActive;
}
public boolean isShared() {
return mIsShared;
}
public String getName() {
return mName;
}
}
package com.commit451.gitlab.navigation;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.Toast;
import com.commit451.gitlab.R;import com.novoda.simplechromecustomtabs.navigation.NavigationFallback;
/**
* A fallback to open the url in the browser
*/
public class BrowserFallback implements NavigationFallback {
private Context mContext;
public BrowserFallback(Context context) {
mContext = context;
}
@Override
public void onFallbackNavigateTo(Uri url) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(url);
try {
mContext.startActivity(i);
} catch (Exception e) {
Toast.makeText(mContext, R.string.error_no_browser, Toast.LENGTH_SHORT)
.show();
}
}
}
\ No newline at end of file
package com.commit451.gitlab.navigation;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import com.commit451.gitlab.R;
/**
* Generates deeplinks
*/
public class DeepLinker {
public static final String EXTRA_ORIGINAL_URI = "original_uri";
public static Intent generateDeeplinkIntentFromUri(Context context, Uri originalUri) {
Uri uri = originalUri.buildUpon()
.scheme(context.getString(R.string.deeplink_scheme))
.build();
return generatePrivateIntent(context, uri, originalUri);
}
private static Intent generatePrivateIntent(Context context, Uri uri, Uri originalUri) {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra(EXTRA_ORIGINAL_URI, originalUri);
intent.setPackage(context.getPackageName());
return intent;
}
}
package com.commit451.gitlab.navigation;
import android.app.Activity;
import com.commit451.gitlab.R;
import com.novoda.simplechromecustomtabs.navigation.IntentCustomizer;
import com.novoda.simplechromecustomtabs.navigation.SimpleChromeCustomTabsIntentBuilder;
/**
* Customize custom intents
*/
public class LabCoatIntentCustomizer implements IntentCustomizer {
private Activity mActivity;
private int mToolbarColor;
public LabCoatIntentCustomizer(Activity activity, int toolbarColor) {
mActivity = activity;
mToolbarColor = toolbarColor;
}
@Override
public SimpleChromeCustomTabsIntentBuilder onCustomiseIntent(SimpleChromeCustomTabsIntentBuilder simpleChromeCustomTabsIntentBuilder) {
return simpleChromeCustomTabsIntentBuilder
.withStartAnimations(mActivity, R.anim.fade_in, R.anim.do_nothing)
.withExitAnimations(mActivity, R.anim.do_nothing, R.anim.fade_out)
.withToolbarColor(mToolbarColor);
}
}
package com.commit451.gitlab.util;
package com.commit451.gitlab.navigation;
 
import android.app.Activity;
import android.app.ActivityOptions;
Loading
Loading
@@ -11,9 +11,11 @@ import android.widget.ImageView;
 
import com.commit451.gitlab.R;
import com.commit451.gitlab.activity.AboutActivity;
import com.commit451.gitlab.activity.ActivityActivity;
import com.commit451.gitlab.activity.AddIssueActivity;
import com.commit451.gitlab.activity.AddMilestoneActivity;
import com.commit451.gitlab.activity.AddUserActivity;
import com.commit451.gitlab.activity.BuildActivity;
import com.commit451.gitlab.activity.DiffActivity;
import com.commit451.gitlab.activity.FileActivity;
import com.commit451.gitlab.activity.GroupActivity;
Loading
Loading
@@ -27,6 +29,7 @@ import com.commit451.gitlab.activity.ProjectsActivity;
import com.commit451.gitlab.activity.SearchActivity;
import com.commit451.gitlab.activity.SettingsActivity;
import com.commit451.gitlab.activity.UserActivity;
import com.commit451.gitlab.data.Prefs;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.model.api.Group;
import com.commit451.gitlab.model.api.Issue;
Loading
Loading
@@ -35,6 +38,7 @@ import com.commit451.gitlab.model.api.Milestone;
import com.commit451.gitlab.model.api.Project;
import com.commit451.gitlab.model.api.RepositoryCommit;
import com.commit451.gitlab.model.api.UserBasic;
import com.commit451.gitlab.util.IntentUtil;
 
import timber.log.Timber;
 
Loading
Loading
@@ -44,39 +48,57 @@ import timber.log.Timber;
public class NavigationManager {
 
public static void navigateToAbout(Activity activity) {
activity.startActivity(AboutActivity.newInstance(activity));
activity.startActivity(AboutActivity.newIntent(activity));
}
 
public static void navigateToSettings(Activity activity) {
activity.startActivity(SettingsActivity.newInstance(activity));
activity.startActivity(SettingsActivity.newIntent(activity));
}
 
public static void navigateToProject(Activity activity, Project project) {
activity.startActivity(ProjectActivity.newInstance(activity, project));
activity.startActivity(ProjectActivity.newIntent(activity, project));
}
 
public static void navigateToProject(Activity activity, long projectId) {
activity.startActivity(ProjectActivity.newInstance(activity, projectId));
public static void navigateToProject(Activity activity, String projectId) {
activity.startActivity(ProjectActivity.newIntent(activity, projectId));
}
 
public static void navigateToStartingActivity(Activity activity) {
int startingActivity = Prefs.getStartingView(activity);
switch (startingActivity) {
case Prefs.STARTING_VIEW_PROJECTS:
navigateToProjects(activity);
break;
case Prefs.STARTING_VIEW_GROUPS:
navigateToGroups(activity);
break;
case Prefs.STARTING_VIEW_ACTIVITY:
navigateToActivity(activity);
break;
}
}
public static void navigateToProjects(Activity activity) {
activity.startActivity(ProjectsActivity.newInstance(activity));
activity.startActivity(ProjectsActivity.newIntent(activity));
}
 
public static void navigateToGroups(Activity activity) {
activity.startActivity(GroupsActivity.newInstance(activity));
activity.startActivity(GroupsActivity.newIntent(activity));
}
public static void navigateToActivity(Activity activity) {
activity.startActivity(ActivityActivity.newIntent(activity));
}
 
public static void navigateToLogin(Activity activity) {
activity.startActivity(LoginActivity.newInstance(activity));
activity.startActivity(LoginActivity.newIntent(activity));
}
 
public static void navigateToLogin(Activity activity, boolean showClose) {
activity.startActivity(LoginActivity.newInstance(activity, showClose));
activity.startActivity(LoginActivity.newIntent(activity, showClose));
}
 
public static void navigateToSearch(Activity activity) {
activity.startActivity(SearchActivity.newInstance(activity));
activity.startActivity(SearchActivity.newIntent(activity));
}
 
public static void navigateToUser(Activity activity, UserBasic user) {
Loading
Loading
@@ -84,7 +106,7 @@ public class NavigationManager {
}
 
public static void navigateToUser(Activity activity, ImageView profileImage, UserBasic user) {
Intent intent = UserActivity.newInstance(activity, user);
Intent intent = UserActivity.newIntent(activity, user);
if (Build.VERSION.SDK_INT >= 21 && profileImage != null) {
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(activity, profileImage, activity.getString(R.string.transition_user));
Loading
Loading
@@ -95,7 +117,7 @@ public class NavigationManager {
}
 
public static void navigateToGroup(Activity activity, ImageView profileImage, Group group) {
Intent intent = GroupActivity.newInstance(activity, group);
Intent intent = GroupActivity.newIntent(activity, group);
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(activity, profileImage, activity.getString(R.string.transition_user));
Loading
Loading
@@ -106,19 +128,23 @@ public class NavigationManager {
}
 
public static void navigateToGroup(Activity activity, long groupId) {
activity.startActivity(GroupActivity.newInstance(activity, groupId));
activity.startActivity(GroupActivity.newIntent(activity, groupId));
}
 
public static void navigateToMilestone(Activity activity, Project project, Milestone milestone) {
activity.startActivity(MilestoneActivity.newInstance(activity, project, milestone));
activity.startActivity(MilestoneActivity.newIntent(activity, project, milestone));
}
 
public static void navigateToIssue(Activity activity, Project project, Issue issue) {
activity.startActivity(IssueActivity.newInstance(activity, project, issue));
activity.startActivity(IssueActivity.newIntent(activity, project, issue));
}
public static void navigateToIssue(Activity activity, String namespace, String projectName, String issueIid) {
activity.startActivity(IssueActivity.newIntent(activity, namespace, projectName, issueIid));
}
 
public static void navigateToMergeRequest(Activity activity, Project project, MergeRequest mergeRequest) {
Intent intent = MergeRequestActivity.newInstance(activity, project, mergeRequest);
Intent intent = MergeRequestActivity.newIntent(activity, project, mergeRequest);
activity.startActivity(intent);
}
 
Loading
Loading
@@ -127,7 +153,7 @@ public class NavigationManager {
}
 
public static void navigateToDiffActivity(Activity activity, Project project, RepositoryCommit commit) {
activity.startActivity(DiffActivity.newInstance(activity, project, commit));
activity.startActivity(DiffActivity.newIntent(activity, project, commit));
}
 
public static void navigateToAddProjectMember(Activity activity, View fab, long projectId) {
Loading
Loading
@@ -153,16 +179,36 @@ public class NavigationManager {
startMorphActivity(activity, fab, intent);
}
 
public static void navigateToAddLabels(Activity activity, Project project, Issue issue) {
//TODO
}
public static void navigateToCreateLabels(Activity activity, View fab, Project project) {
Intent intent = AddMilestoneActivity.newIntent(activity, project.getId());
startMorphActivity(activity, fab, intent);
}
public static void navigateToAddMilestone(Activity activity, View fab, Project project) {
Intent intent = AddMilestoneActivity.newInstance(activity, project.getId());
Intent intent = AddMilestoneActivity.newIntent(activity, project.getId());
startMorphActivity(activity, fab, intent);
}
 
public static void navigateToEditMilestone(Activity activity, View fab, Project project, Milestone milestone) {
Intent intent = AddMilestoneActivity.newInstance(activity, project.getId(), milestone);
Intent intent = AddMilestoneActivity.newIntent(activity, project.getId(), milestone);
startMorphActivity(activity, fab, intent);
}
 
public static void navigateToBuild(Activity activity, Project project, com.commit451.gitlab.model.api.Build build) {
Intent intent = BuildActivity.newIntent(activity, project, build);
activity.startActivity(intent);
}
public static void navigateToChoosePhoto(Activity activity, int requestCode) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
activity.startActivityForResult(photoPickerIntent, requestCode);
}
private static void startMorphActivity(Activity activity, View fab, Intent intent) {
if (Build.VERSION.SDK_INT >= 21 && fab != null) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation
Loading
Loading
@@ -177,38 +223,9 @@ public class NavigationManager {
public static void navigateToUrl(Activity activity, Uri uri, Account account) {
Timber.d("navigateToUrl: %s", uri);
if (account.getServerUrl().getHost().equals(uri.getHost())) {
boolean handled = navigateToUrl(activity, uri);
if (!handled) {
IntentUtil.openPage(activity, uri.toString());
}
activity.startActivity(DeepLinker.generateDeeplinkIntentFromUri(activity, uri));
} else {
IntentUtil.openPage(activity, uri.toString());
}
}
/**
* Attempts to map a url to an activity within the app
* @param activity the current activity
* @param uri the url we want to map
* @return true if we navigated somewhere, false otherwise
*/
private static boolean navigateToUrl(Activity activity, Uri uri) {
//TODO figure out the url to activity mapping
// if (uri.getPath().contains("issues")) {
// List<String> pathSegments = uri.getPathSegments();
// for (int i=0; i<pathSegments.size(); i++) {
// //segment == issues, and there is one more segment in the path
// if (pathSegments.get(i).equals("issues") && i != pathSegments.size()-1) {
// //TODO this would probably break if we had query params or anything else in the url
// String issueId = pathSegments.get(i+1);
// //TODO actually navigate to issue activity which will load the needed project and issue
// //navigateToIssue(activity, null, issueId);
// return true;
// }
// }
// navigateToProject(activity, -1);
// return true;
// }
return false;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment