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

Merge branch 'master' into fdroid

# Conflicts:
#	app/build.gradle
#	app/src/main/java/com/commit451/gitlab/App.java
parents b7633464 230cbe28
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 224 additions and 130 deletions
Loading
Loading
@@ -13,11 +13,10 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
 
import com.commit451.easycallback.EasyCallback;
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.adapter.UsersAdapter;
import com.commit451.easycallback.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.UserBasic;
import com.commit451.gitlab.navigation.Navigator;
import com.commit451.gitlab.util.PaginationUtil;
Loading
Loading
@@ -120,6 +119,7 @@ public class UsersFragment extends ButterKnifeFragment {
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
mUsersAdapter.addData(response);
mNextPageUrl = PaginationUtil.parse(getResponse()).getNext();
mUsersAdapter.setLoading(false);
Loading
Loading
@@ -132,6 +132,7 @@ public class UsersFragment extends ButterKnifeFragment {
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
mUsersAdapter.setLoading(false);
}
};
Loading
Loading
@@ -200,14 +201,14 @@ public class UsersFragment extends ButterKnifeFragment {
}
});
 
GitLabClient.instance().searchUsers(mQuery).enqueue(mSearchCallback);
App.instance().getGitLab().searchUsers(mQuery).enqueue(mSearchCallback);
}
 
private void loadMore() {
mLoading = true;
mUsersAdapter.setLoading(true);
Timber.d("loadMore called for %s %s", mNextPageUrl.toString(), mQuery);
GitLabClient.instance().searchUsers(mNextPageUrl.toString(), mQuery).enqueue(mMoreUsersCallback);
App.instance().getGitLab().searchUsers(mNextPageUrl.toString(), mQuery).enqueue(mMoreUsersCallback);
}
 
public void searchQuery(String query) {
Loading
Loading
Loading
Loading
@@ -19,16 +19,21 @@ public class Label {
String mColor;
@JsonField(name = "name")
String mName;
@JsonField(name = "description")
String mDescription;
@JsonField(name = "open_issues_count")
int mOpenIssuesCount;
@JsonField(name = "closed_issues_count")
int mClosedIssuesCount;
@JsonField(name = "open_merge_requests_count")
int mOpenMergeRequestsCount;
@JsonField(name = "subscribed")
boolean mSubscribed;
 
protected Label() {
//for json parsing
}
 
public Label(String name, String color) {
mName = name;
mColor = color;
}
public String getName() {
return mName;
}
Loading
Loading
@@ -41,4 +46,45 @@ public class Label {
return Color.TRANSPARENT;
}
}
public String getDescription() {
return mDescription;
}
public int getOpenIssuesCount() {
return mOpenIssuesCount;
}
public int getClosedIssuesCount() {
return mClosedIssuesCount;
}
public int getOpenMergeRequestsCount() {
return mOpenMergeRequestsCount;
}
public boolean isSubscribed() {
return mSubscribed;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Label label = (Label) o;
if (mColor != null ? !mColor.equals(label.mColor) : label.mColor != null) return false;
if (mName != null ? !mName.equals(label.mName) : label.mName != null) return false;
return mDescription != null ? mDescription.equals(label.mDescription) : label.mDescription == null;
}
@Override
public int hashCode() {
int result = mColor != null ? mColor.hashCode() : 0;
result = 31 * result + (mName != null ? mName.hashCode() : 0);
result = 31 * result + (mDescription != null ? mDescription.hashCode() : 0);
return result;
}
}
Loading
Loading
@@ -15,6 +15,7 @@ import com.commit451.gitlab.activity.ActivityActivity;
import com.commit451.gitlab.activity.AddIssueActivity;
import com.commit451.gitlab.activity.AddLabelActivity;
import com.commit451.gitlab.activity.AddMilestoneActivity;
import com.commit451.gitlab.activity.AddNewLabelActivity;
import com.commit451.gitlab.activity.AddUserActivity;
import com.commit451.gitlab.activity.BuildActivity;
import com.commit451.gitlab.activity.DiffActivity;
Loading
Loading
@@ -185,6 +186,11 @@ public class Navigator {
activity.startActivityForResult(intent, requestCode);
}
 
public static void navigateToAddNewLabel(Activity activity, long projectId, int requestCode) {
Intent intent = AddNewLabelActivity.newIntent(activity, projectId);
activity.startActivityForResult(intent, requestCode);
}
public static void navigateToAddMilestone(Activity activity, View fab, Project project) {
Intent intent = AddMilestoneActivity.newIntent(activity, project.getId());
startMorphActivity(activity, fab, intent);
Loading
Loading
package com.commit451.gitlab.navigation;
 
import android.net.Uri;
import android.support.annotation.Nullable;
 
/**
* Interface called when routing in the Routing activity
Loading
Loading
@@ -12,5 +13,5 @@ public interface RoutingNavigator {
void onRouteToProject(String namespace, String projectId);
void onRouteToBuild(String projectNamespace, String projectName, String buildNumber);
void onRouteToMilestone(String projectNamespace, String projectName, String milestoneNumber);
void onRouteUnknown(Uri uri);
void onRouteUnknown(@Nullable Uri uri);
}
package com.commit451.gitlab.navigation;
 
import android.net.Uri;
import android.support.annotation.Nullable;
 
/**
* Routes things. Could probably be better if it used regex. Maybe one day
Loading
Loading
@@ -13,7 +14,11 @@ public class RoutingRouter {
mNavigator = routingNavigator;
}
 
public void route(Uri link) {
public void route(@Nullable Uri link) {
if (link == null) {
mNavigator.onRouteUnknown(null);
return;
}
if (link.getPath().contains("issues")) {
if (link.getLastPathSegment().equals("issues")) {
//this means it was just a link to something like
Loading
Loading
package com.commit451.gitlab.provider;
import com.commit451.gitlab.BuildConfig;
import com.commit451.gitlab.api.AuthenticationRequestInterceptor;
import com.commit451.gitlab.api.OpenSignInAuthenticator;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.ssl.CustomTrustManager;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
/**
* Creates an OkHttpClient with the needed defaults
*/
public final class OkHttpClientProvider {
private static Account sAccount;
private static CustomTrustManager sCustomTrustManager = new CustomTrustManager();
private static OkHttpClient sOkHttpClient;
private OkHttpClientProvider() {}
public static OkHttpClient getInstance(Account account) {
if (sAccount != account) {
sOkHttpClient = null;
}
if (sOkHttpClient == null) {
sOkHttpClient = createInstance(account);
sAccount = account;
}
return sOkHttpClient;
}
public static OkHttpClient createInstance(Account account) {
sCustomTrustManager.setTrustedCertificate(account.getTrustedCertificate());
sCustomTrustManager.setTrustedHostname(account.getTrustedHostname());
sCustomTrustManager.setPrivateKeyAlias(account.getPrivateKeyAlias());
OpenSignInAuthenticator authenticator = new OpenSignInAuthenticator(account);
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.sslSocketFactory(sCustomTrustManager.getSSLSocketFactory())
.hostnameVerifier(sCustomTrustManager.getHostnameVerifier())
.authenticator(authenticator)
.proxyAuthenticator(authenticator);
clientBuilder.addInterceptor(new AuthenticationRequestInterceptor(account));
if (BuildConfig.DEBUG) {
clientBuilder.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY));
}
return clientBuilder.build();
}
}
Loading
Loading
@@ -11,9 +11,11 @@ import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
 
/**
* Custom SSL factory so that we can enforce using TLS 1.2 on Android 4.1-4.4
* Custom SSL factory so that we can enforce using TLS 1.2 on Android 4.1-4.4 where it is not
* enabled by default and also have custom trusted https servers
*/
public class CustomSSLSocketFactory extends SSLSocketFactory {
/**
* You may be wondering why this is named "delegate" which seems to break the convention
* of the rest of the project. See here for deets:
Loading
Loading
@@ -23,7 +25,6 @@ public class CustomSSLSocketFactory extends SSLSocketFactory {
 
public CustomSSLSocketFactory(SSLSocketFactory internalFactory) {
super();
this.delegate = internalFactory;
}
 
Loading
Loading
package com.commit451.gitlab.ssl;
 
import timber.log.Timber;
import com.commit451.gitlab.api.X509TrustManagerProvider;
 
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
 
Loading
Loading
@@ -13,32 +10,13 @@ import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
 
/**
* Allows for custom configurations, such as custom trusted hostnames, custom trusted certificates,
* and private keys
*/
public class CustomTrustManager implements X509TrustManager {
private static X509TrustManager sDefaultTrustManager;
static {
try {
TrustManagerFactory factory = TrustManagerFactory.getInstance("X509");
factory.init((KeyStore) null);
TrustManager[] trustManagers = factory.getTrustManagers();
if (trustManagers != null) {
for (TrustManager trustManager : trustManagers) {
if (trustManager instanceof X509TrustManager) {
sDefaultTrustManager = (X509TrustManager) trustManager;
break;
}
}
}
} catch (NoSuchAlgorithmException e) {
Timber.e(e, "Unable to get X509 TrustManager");
} catch (KeyStoreException e) {
Timber.e(e, "Exception while initializing CustomTrustManager");
}
}
 
private String mTrustedCertificate;
private String mTrustedHostname;
Loading
Loading
@@ -77,22 +55,22 @@ public class CustomTrustManager implements X509TrustManager {
 
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (sDefaultTrustManager == null) {
if (X509TrustManagerProvider.get() == null) {
throw new IllegalStateException("No default TrustManager available");
}
 
sDefaultTrustManager.checkClientTrusted(chain, authType);
X509TrustManagerProvider.get().checkClientTrusted(chain, authType);
}
 
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (sDefaultTrustManager == null) {
if (X509TrustManagerProvider.get() == null) {
throw new IllegalStateException("No default TrustManager available");
}
 
CertificateException cause;
try {
sDefaultTrustManager.checkServerTrusted(chain, authType);
X509TrustManagerProvider.get().checkServerTrusted(chain, authType);
return;
} catch (CertificateException e) {
cause = e;
Loading
Loading
@@ -107,11 +85,11 @@ public class CustomTrustManager implements X509TrustManager {
 
@Override
public X509Certificate[] getAcceptedIssuers() {
if (sDefaultTrustManager == null) {
if (X509TrustManagerProvider.get() == null) {
throw new IllegalStateException("No default TrustManager available");
}
 
return sDefaultTrustManager.getAcceptedIssuers();
return X509TrustManagerProvider.get().getAcceptedIssuers();
}
 
public SSLSocketFactory getSSLSocketFactory() {
Loading
Loading
package com.commit451.gitlab.util;
import android.support.annotation.ColorInt;
/**
* Does cool things with colors
*/
public class ColorUtil {
public static String convertColorIntToString(@ColorInt int color) {
return String.format("#%06X", (0xFFFFFF & color));
}
}
package com.commit451.gitlab.util;
 
import android.net.Uri;
import com.commit451.gitlab.model.Account;
 
import org.joda.time.DateTime;
import org.joda.time.format.ISODateTimeFormat;
 
import android.net.Uri;
import java.util.Date;
 
/**
* Converts things!
*/
public final class ConversionUtil {
private ConversionUtil() {}
 
Loading
Loading
package com.commit451.gitlab.util;
 
import android.content.Context;
import android.text.format.DateUtils;
 
import com.commit451.gitlab.R;
 
Loading
Loading
@@ -8,10 +9,10 @@ import java.util.Date;
import java.util.concurrent.TimeUnit;
 
/**
* Our own DateUtils, which call forwards to {@link android.text.format.DateUtils} with some
* Our own DateUtil, which call forwards to {@link android.text.format.DateUtils} with some
* nice defaults
*/
public class DateUtils {
public class DateUtil {
 
public static CharSequence getRelativeTimeSpanString(Context context, Date startTime) {
Date now = new Date();
Loading
Loading
@@ -19,7 +20,7 @@ public class DateUtils {
return context.getString(R.string.just_now);
}
 
return android.text.format.DateUtils.getRelativeTimeSpanString(startTime.getTime(),
return DateUtils.getRelativeTimeSpanString(startTime.getTime(),
now.getTime(),
android.text.format.DateUtils.SECOND_IN_MILLIS)
.toString();
Loading
Loading
package com.commit451.gitlab.util;
import android.content.Context;
import android.support.annotation.DimenRes;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.View;
/**
* {@link GridLayoutManager} which dynamically sizes its number of columns based on
* {@link #setMinimumWidth(int)}
*/
public class DynamicGridLayoutManager extends GridLayoutManager {
private int mMinWidth = 100;
private Context mContext;
private int mNumColumns = -1;
public DynamicGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
mContext = context;
}
public DynamicGridLayoutManager(Context context) {
super(context, 2);
mContext = context;
}
public DynamicGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) {
super(context, spanCount, orientation, reverseLayout);
mContext = context;
}
public void setMinimumWidth(int minimumWidth) {
mMinWidth = minimumWidth;
if (getWidth() != 0) {
int columns = getWidth() / mMinWidth;
setSpanCount(Math.max(1, columns));
}
}
public void setMinimumWidthDimension(@DimenRes int dimension) {
setMinimumWidth(mContext.getResources().getDimensionPixelSize(dimension));
}
@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
int width = View.MeasureSpec.getSize(widthSpec);
mNumColumns = Math.max(1, width / mMinWidth);
setSpanCount(mNumColumns);
super.onMeasure(recycler, state, widthSpec, heightSpec);
}
/**
* Get the number of computed columns. Useful for using with
* {@link SpanSizeLookup}
* @return the number of columns or -1 if the columns have not yet been measured.
*/
public int getNumColumns() {
return mNumColumns;
}
}
package com.commit451.gitlab.util;
import android.support.design.widget.TextInputLayout;
import android.text.TextUtils;
/**
* Validates input
*/
public class Validator {
/**
* Make sure all the edittexts are not empty and fill in an error message if they are
*
* @param textInputLayouts all the input layouts you wish to validate
* @return true if all the fields were valid.
*/
public static boolean validateFieldsNotEmpty(String errorText, TextInputLayout... textInputLayouts) {
boolean valid = true;
for (TextInputLayout textInputLayout : textInputLayouts) {
if (textInputLayout.getEditText() != null && TextUtils.isEmpty(textInputLayout.getEditText().getText().toString().trim())) {
textInputLayout.setError(errorText);
valid = false;
} else {
//clear out a possible previous error
textInputLayout.setError(null);
}
}
return valid;
}
}
Loading
Loading
@@ -15,23 +15,22 @@ import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.easel.Easel;
import com.commit451.easycallback.EasyCallback;
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.activity.ActivityActivity;
import com.commit451.gitlab.activity.GroupsActivity;
import com.commit451.gitlab.activity.ProjectsActivity;
import com.commit451.gitlab.adapter.AccountsAdapter;
import com.commit451.easycallback.EasyCallback;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.data.Prefs;
import com.commit451.gitlab.event.CloseDrawerEvent;
import com.commit451.gitlab.event.LoginEvent;
import com.commit451.gitlab.event.ReloadDataEvent;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.model.api.UserFull;
import com.commit451.gitlab.navigation.Navigator;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
import com.commit451.gitlab.navigation.Navigator;
import com.squareup.otto.Subscribe;
 
import java.util.Collections;
Loading
Loading
@@ -126,7 +125,7 @@ public class LabCoatNavigationView extends NavigationView {
Navigator.navigateToLogin((Activity) getContext());
((Activity) getContext()).finish();
} else {
if (account.equals(GitLabClient.getAccount())) {
if (account.equals(App.instance().getAccount())) {
switchToAccount(accounts.get(0));
}
}
Loading
Loading
@@ -139,7 +138,7 @@ public class LabCoatNavigationView extends NavigationView {
public void success(@NonNull UserFull response) {
//Store the newly retrieved user to the account so that it stays up to date
// in local storage
Account account = GitLabClient.getAccount();
Account account = App.instance().getAccount();
account.setUser(response);
Prefs.updateAccount(getContext(), account);
bindUser(response);
Loading
Loading
@@ -153,7 +152,7 @@ public class LabCoatNavigationView extends NavigationView {
 
@OnClick(R.id.profile_image)
public void onUserImageClick(ImageView imageView) {
Navigator.navigateToUser((Activity) getContext(), imageView, GitLabClient.getAccount().getUser());
Navigator.navigateToUser((Activity) getContext(), imageView, App.instance().getAccount().getUser());
}
 
@OnClick(R.id.drawer_header)
Loading
Loading
@@ -235,7 +234,7 @@ public class LabCoatNavigationView extends NavigationView {
}
 
private void loadCurrentUser() {
GitLabClient.instance().getThisUser().enqueue(mUserCallback);
App.instance().getGitLab().getThisUser().enqueue(mUserCallback);
}
 
private void bindUser(UserFull user) {
Loading
Loading
@@ -249,7 +248,7 @@ public class LabCoatNavigationView extends NavigationView {
mUserEmail.setText(user.getEmail());
}
Uri url = ImageUtil.getAvatarUrl(user, getResources().getDimensionPixelSize(R.dimen.larger_image_size));
GitLabClient.getPicasso()
App.instance().getPicasso()
.load(url)
.transform(new CircleTransformation())
.into(mProfileImage);
Loading
Loading
@@ -280,7 +279,7 @@ public class LabCoatNavigationView extends NavigationView {
private void switchToAccount(Account account) {
Timber.d("Switching to account: %s", account);
account.setLastUsed(new Date());
GitLabClient.setAccount(account);
App.instance().setAccount(account);
Prefs.updateAccount(getContext(), account);
bindUser(account.getUser());
toggleAccounts();
Loading
Loading
Loading
Loading
@@ -8,8 +8,8 @@ import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.TextView;
 
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.Account;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
Loading
Loading
@@ -60,7 +60,7 @@ public class AccountViewHolder extends RecyclerView.ViewHolder{
itemView.setBackground(null);
}
 
GitLabClient.getPicasso()
App.instance().getPicasso()
.load(ImageUtil.getAvatarUrl(account.getUser(), itemView.getResources().getDimensionPixelSize(R.dimen.user_list_image_size)))
.transform(new CircleTransformation())
.into(mImageView);
Loading
Loading
Loading
Loading
@@ -8,8 +8,8 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.Member;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.ImageUtil;
Loading
Loading
@@ -44,7 +44,7 @@ public class AssigneeSpinnerViewHolder extends RecyclerView.ViewHolder {
mImageView.setImageResource(R.drawable.ic_assign_24dp);
} else {
mUsernameView.setText(user.getUsername());
GitLabClient.getPicasso()
App.instance().getPicasso()
.load(ImageUtil.getAvatarUrl(user, itemView.getResources().getDimensionPixelSize(R.dimen.user_list_image_size)))
.transform(new CircleTransformation())
.into(mImageView);
Loading
Loading
Loading
Loading
@@ -8,7 +8,7 @@ import android.widget.TextView;
 
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.api.Build;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.DateUtil;
 
import java.util.Date;
 
Loading
Loading
@@ -47,7 +47,7 @@ public class BuildViewHolder extends RecyclerView.ViewHolder {
if (startedAt == null) {
startedAt = new Date();
}
String timeTaken = DateUtils.getTimeTaken(startedAt, finishedTime);
String timeTaken = DateUtil.getTimeTaken(startedAt, finishedTime);
String durationStr = String.format(itemView.getResources().getString(R.string.build_duration), timeTaken);
duration.setText(durationStr);
}
Loading
Loading
Loading
Loading
@@ -7,11 +7,11 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.RepositoryCommit;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.DateUtil;
import com.commit451.gitlab.util.ImageUtil;
 
import butterknife.BindView;
Loading
Loading
@@ -39,7 +39,7 @@ public class CommitViewHolder extends RecyclerView.ViewHolder {
}
 
public void bind(RepositoryCommit commit) {
GitLabClient.getPicasso()
App.instance().getPicasso()
.load(ImageUtil.getAvatarUrl(commit.getAuthorEmail(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mImageView);
Loading
Loading
@@ -47,7 +47,7 @@ public class CommitViewHolder extends RecyclerView.ViewHolder {
mMessageView.setText(commit.getTitle());
mAuthorView.setText(commit.getAuthorName());
if (commit.getCreatedAt() != null) {
mTimeView.setText(DateUtils.getRelativeTimeSpanString(itemView.getContext(), commit.getCreatedAt()));
mTimeView.setText(DateUtil.getRelativeTimeSpanString(itemView.getContext(), commit.getCreatedAt()));
} else {
mTimeView.setText(R.string.unknown);
}
Loading
Loading
Loading
Loading
@@ -7,11 +7,11 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.api.RepositoryCommit;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtils;
import com.commit451.gitlab.util.DateUtil;
import com.commit451.gitlab.util.ImageUtil;
 
import butterknife.BindView;
Loading
Loading
@@ -40,13 +40,13 @@ public class DiffHeaderViewHolder extends RecyclerView.ViewHolder {
}
 
public void bind(RepositoryCommit commit) {
GitLabClient.getPicasso()
App.instance().getPicasso()
.load(ImageUtil.getAvatarUrl(commit.getAuthorEmail(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mImageView);
 
mAuthorView.setText(commit.getAuthorName());
mTimeView.setText(DateUtils.getRelativeTimeSpanString(itemView.getContext(), commit.getCreatedAt()));
mTimeView.setText(DateUtil.getRelativeTimeSpanString(itemView.getContext(), commit.getCreatedAt()));
mTitleView.setText(commit.getTitle());
String message = extractMessage(commit.getTitle(), commit.getMessage());
mMessageView.setText(message);
Loading
Loading
Loading
Loading
@@ -8,8 +8,8 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
 
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.api.GitLabClient;
import com.commit451.gitlab.model.rss.Entry;
import com.commit451.gitlab.transformation.CircleTransformation;
 
Loading
Loading
@@ -37,7 +37,7 @@ public class FeedEntryViewHolder extends RecyclerView.ViewHolder {
}
 
public void bind(Entry entry) {
GitLabClient.getPicasso()
App.instance().getPicasso()
.load(entry.getThumbnail().getUrl())
.transform(new CircleTransformation())
.into(mImageView);
Loading
Loading
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