Skip to content
Snippets Groups Projects
Commit ade2c4cf authored by Jawnnypoo's avatar Jawnnypoo
Browse files

Merge branch 'develop'

parents eb09a2b1 1e4317f3
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 878 additions and 170 deletions
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;
}
}
package com.commit451.gitlab.navigation;
import android.net.Uri;
/**
* Interface called when routing in the Routing activity
*/
public interface RoutingNavigator {
void onRouteToIssue(String projectNamespace, String projectName, String issueIid);
void onRouteToCommit(String projectNamespace, String projectName, String commitSha);
void onRouteToMergeRequest(String projectNamespace, String projectName, String mergeRequestId);
void onRouteToProject(String namespace, String projectId);
void onRouteUnknown(Uri uri);
}
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