From 3c9dc73df86d63df3e3f5c17a57ccf22792795b0 Mon Sep 17 00:00:00 2001
From: Hannes Dorfmann
Date: Mon, 20 Mar 2017 15:12:22 +0100
Subject: [PATCH 1/6] Update ISSUE_TEMPLATE.md
---
.github/ISSUE_TEMPLATE.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 06a4137f..7b14cd7d 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -11,10 +11,10 @@ With that said, if you want to report a bug or file a feature request, then go a
If you want to report an issue, please use the following template to make it easier for us to identify the bug:
-### Mosby Version
+**Mosby Version:**
-### Expected behavior
+**Expected behavior**
-### Actual behavior (include a stacktrace if crash):
+**Actual behavior (include a stacktrace if crash)**
-### Steps to reproduce the behavior
+**Steps to reproduce the behavior or link to a sample repository**
From 0cfeacb4c5762e96d942ffd8adf44a961b48d562 Mon Sep 17 00:00:00 2001
From: jonathan-caryl
Date: Wed, 22 Mar 2017 10:13:07 +0000
Subject: [PATCH 2/6] Modifier public is redundant for interface methods (#223)
---
.../mosby3/ActivityMviDelegate.java | 22 +++++++-------
.../mosby3/FragmentMviDelegate.java | 30 +++++++++----------
.../mosby3/MviDelegateCallback.java | 6 ++--
.../mosby3/ViewGroupMviDelegate.java | 8 ++---
.../mosby3/ViewGroupMviDelegateCallback.java | 6 ++--
.../mosby3/mvp/lce/MvpLceView.java | 10 +++----
.../mvp/delegate/ActivityMvpDelegate.java | 20 ++++++-------
.../mvp/delegate/FragmentMvpDelegate.java | 24 +++++++--------
.../mvp/delegate/MvpDelegateCallback.java | 8 ++---
.../delegate/ViewGroupDelegateCallback.java | 6 ++--
.../mvp/delegate/ViewGroupMvpDelegate.java | 8 ++---
.../sample/mail/MainActivityComponent.java | 2 +-
.../sample/mail/base/view/AuthView.java | 2 +-
.../sample/mail/base/view/BaseMailView.java | 10 +++----
.../base/view/viewstate/AuthViewState.java | 4 +--
.../sample/mail/details/DetailsComponent.java | 4 +--
.../mosby3/sample/mail/label/LabelView.java | 8 ++---
.../sample/mail/login/LoginComponent.java | 2 +-
.../mosby3/sample/mail/login/LoginView.java | 8 ++---
.../sample/mail/mails/MailsComponent.java | 4 +--
.../mosby3/sample/mail/mails/MailsView.java | 2 +-
.../mosby3/sample/mail/menu/MenuView.java | 4 +--
.../sample/mail/model/mail/MailGenerator.java | 4 +--
.../model/mail/service/ServiceComponent.java | 4 +--
.../sample/mail/profile/ProfileComponent.java | 2 +-
.../profile/mails/ProfileMailsComponent.java | 4 +--
.../sample/mail/search/SearchComponent.java | 4 +--
.../mosby3/sample/mail/search/SearchView.java | 8 ++---
.../mail/statistics/StatisticsComponent.java | 2 +-
.../sample/mail/write/WriteComponent.java | 4 +--
.../mosby3/sample/mail/write/WriteView.java | 10 +++----
.../businesslogic/http/ProductBackendApi.java | 2 +-
.../details/ProductDetailsViewState.java | 6 ++--
.../mvi/view/category/CategoryView.java | 4 +--
.../mvi/view/category/CategoryViewState.java | 6 ++--
.../checkoutbutton/CheckoutButtonView.java | 4 +--
.../mvi/view/detail/ProductDetailsView.java | 8 ++---
.../mosby3/sample/mvi/view/home/HomeView.java | 10 +++----
.../mvi/view/home/PartialStateChanges.java | 24 +++++++--------
.../sample/mvi/view/menu/MenuViewState.java | 6 ++--
.../SelectedCountToolbarView.java | 6 ++--
.../ShoppingCartLabelView.java | 4 +--
.../view/ui/viewholder/ProductViewHolder.java | 2 +-
.../mosby3/sample/mvp/CountriesPresenter.java | 2 +-
.../mvp/customviewstate/MyCustomView.java | 4 +--
.../MvpViewStateDelegateCallback.java | 14 ++++-----
.../mvp/viewstate/RestorableViewState.java | 4 +--
.../mosby3/mvp/viewstate/ViewState.java | 2 +-
48 files changed, 174 insertions(+), 174 deletions(-)
diff --git a/mvi/src/main/java/com/hannesdorfmann/mosby3/ActivityMviDelegate.java b/mvi/src/main/java/com/hannesdorfmann/mosby3/ActivityMviDelegate.java
index 330992d5..ed1f49de 100644
--- a/mvi/src/main/java/com/hannesdorfmann/mosby3/ActivityMviDelegate.java
+++ b/mvi/src/main/java/com/hannesdorfmann/mosby3/ActivityMviDelegate.java
@@ -54,58 +54,58 @@ public interface ActivityMviDelegate extends MvpView {
* @param pullToRefresh true, if pull-to-refresh has been invoked loading.
*/
@UiThread
- public void showLoading(boolean pullToRefresh);
+ void showLoading(boolean pullToRefresh);
/**
* Show the content view.
@@ -58,7 +58,7 @@ public interface MvpLceView extends MvpView {
* The content view must have the id = R.id.contentView
*/
@UiThread
- public void showContent();
+ void showContent();
/**
* Show the error view.
@@ -69,13 +69,13 @@ public interface MvpLceView extends MvpView {
* false.
*/
@UiThread
- public void showError(Throwable e, boolean pullToRefresh);
+ void showError(Throwable e, boolean pullToRefresh);
/**
* The data that should be displayed with {@link #showContent()}
*/
@UiThread
- public void setData(M data);
+ void setData(M data);
/**
* Load the data. Typically invokes the presenter method to load the desired data.
@@ -88,5 +88,5 @@ public interface MvpLceView extends MvpView {
* @param pullToRefresh true, if triggered by a pull to refresh. Otherwise false.
*/
@UiThread
- public void loadData(boolean pullToRefresh);
+ void loadData(boolean pullToRefresh);
}
diff --git a/mvp/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/ActivityMvpDelegate.java b/mvp/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/ActivityMvpDelegate.java
index 875717d1..95b88cdf 100644
--- a/mvp/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/ActivityMvpDelegate.java
+++ b/mvp/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/ActivityMvpDelegate.java
@@ -53,52 +53,52 @@ public interface ActivityMvpDelegate extends MvpLceView {
- public void showAuthenticationRequired();
+ void showAuthenticationRequired();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/BaseMailView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/BaseMailView.java
index c4d922b1..28599ef1 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/BaseMailView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/BaseMailView.java
@@ -23,18 +23,18 @@
*/
public interface BaseMailView extends AuthView {
- public void markMailAsStared(int mailId);
+ void markMailAsStared(int mailId);
- public void markMailAsUnstared(int mailId);
+ void markMailAsUnstared(int mailId);
- public void showStaringFailed(Mail mail);
+ void showStaringFailed(Mail mail);
- public void showUnstaringFailed(Mail mail);
+ void showUnstaringFailed(Mail mail);
/**
* Marks a certain mail as read
*/
- public void markMailAsRead(Mail mail, boolean read);
+ void markMailAsRead(Mail mail, boolean read);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/viewstate/AuthViewState.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/viewstate/AuthViewState.java
index 58c213dc..6bf40be2 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/viewstate/AuthViewState.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/base/view/viewstate/AuthViewState.java
@@ -24,7 +24,7 @@
*/
public interface AuthViewState> extends LceViewState {
- public static final int SHOWING_AUTHENTICATION_REQUIRED = 2;
+ static final int SHOWING_AUTHENTICATION_REQUIRED = 2;
- public void setShowingAuthenticationRequired();
+ void setShowingAuthenticationRequired();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/details/DetailsComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/details/DetailsComponent.java
index fb57c019..988adb0c 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/details/DetailsComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/details/DetailsComponent.java
@@ -16,8 +16,8 @@
)
public interface DetailsComponent {
- public DetailsPresenter presenter();
+ DetailsPresenter presenter();
- public void inject(DetailsFragment fragment);
+ void inject(DetailsFragment fragment);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/label/LabelView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/label/LabelView.java
index 8f275294..52e21234 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/label/LabelView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/label/LabelView.java
@@ -10,12 +10,12 @@
*/
public interface LabelView extends MvpLceView> {
- public void showLabel();
+ void showLabel();
- public void changeLabel(Mail mail, String label);
+ void changeLabel(Mail mail, String label);
- public void showChangeLabelFailed(Mail mail, Throwable t);
+ void showChangeLabelFailed(Mail mail, Throwable t);
- public void setMail(Mail mail);
+ void setMail(Mail mail);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginComponent.java
index 4b968d34..f8c0f190 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginComponent.java
@@ -29,5 +29,5 @@
dependencies = MailAppComponent.class)
public interface LoginComponent {
- public LoginPresenter presenter();
+ LoginPresenter presenter();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginView.java
index 2f14e1c7..dcb4c917 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/login/LoginView.java
@@ -23,11 +23,11 @@
*/
public interface LoginView extends MvpView {
- public void showLoginForm();
+ void showLoginForm();
- public void showError();
+ void showError();
- public void showLoading();
+ void showLoading();
- public void loginSuccessful();
+ void loginSuccessful();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsComponent.java
index 844468a3..db2c7cd9 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsComponent.java
@@ -14,7 +14,7 @@
dependencies = MailAppComponent.class)
public interface MailsComponent {
- public MailsPresenter presenter();
+ MailsPresenter presenter();
- public void inject(MailsFragment fragment);
+ void inject(MailsFragment fragment);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsView.java
index 35e1a914..5fe8e6e4 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/mails/MailsView.java
@@ -25,5 +25,5 @@
*/
public interface MailsView extends BaseMailView> {
- public void changeLabel(Mail mail, String label);
+ void changeLabel(Mail mail, String label);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/menu/MenuView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/menu/MenuView.java
index 43c5afe5..180466c1 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/menu/MenuView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/menu/MenuView.java
@@ -26,7 +26,7 @@
*/
public interface MenuView extends AuthView> {
- public void setAccount(Account account);
+ void setAccount(Account account);
- public void decrementUnreadCount(String label);
+ void decrementUnreadCount(String label);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/MailGenerator.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/MailGenerator.java
index f8fdb464..74bf7d2b 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/MailGenerator.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/MailGenerator.java
@@ -23,7 +23,7 @@
*/
public interface MailGenerator {
- public List generateMails();
+ List generateMails();
- public Mail generateResponseMail(String senderMail);
+ Mail generateResponseMail(String senderMail);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/ServiceComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/ServiceComponent.java
index 875e3490..989746d0 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/ServiceComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/ServiceComponent.java
@@ -14,7 +14,7 @@
dependencies = MailAppComponent.class)
public interface ServiceComponent {
- public void inject(SendMailService service);
+ void inject(SendMailService service);
- public void inject(GcmFakeIntentService service);
+ void inject(GcmFakeIntentService service);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/ProfileComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/ProfileComponent.java
index c737b64d..88ed7142 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/ProfileComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/ProfileComponent.java
@@ -16,5 +16,5 @@
},
dependencies = MailAppComponent.class) public interface ProfileComponent {
- public ProfilePresenter presenter();
+ ProfilePresenter presenter();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/mails/ProfileMailsComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/mails/ProfileMailsComponent.java
index 848eedb8..781c46a4 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/mails/ProfileMailsComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/profile/mails/ProfileMailsComponent.java
@@ -15,7 +15,7 @@
public interface ProfileMailsComponent {
- public ProfileMailsPresenter presenter();
+ ProfileMailsPresenter presenter();
- public void inject(ProfileMailsFragment fragment);
+ void inject(ProfileMailsFragment fragment);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchComponent.java
index 57598c69..eaf761b9 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchComponent.java
@@ -13,7 +13,7 @@
modules = { MailModule.class, NavigationModule.class },
dependencies = MailAppComponent.class) public interface SearchComponent {
- public SearchPresenter presenter();
+ SearchPresenter presenter();
- public void inject(SearchFragment fragment);
+ void inject(SearchFragment fragment);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchView.java
index 3ab89f75..29beb448 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/search/SearchView.java
@@ -9,11 +9,11 @@
*/
public interface SearchView extends BaseMailView> {
- public void addOlderMails(List older);
+ void addOlderMails(List older);
- public void showLoadMore(boolean showLoadMore);
+ void showLoadMore(boolean showLoadMore);
- public void showLoadMoreError(Throwable e);
+ void showLoadMoreError(Throwable e);
- public void showSearchNotStartedYet();
+ void showSearchNotStartedYet();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/statistics/StatisticsComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/statistics/StatisticsComponent.java
index d4ebeb69..1ec00c02 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/statistics/StatisticsComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/statistics/StatisticsComponent.java
@@ -14,5 +14,5 @@
dependencies = MailAppComponent.class)
public interface StatisticsComponent {
- public StatisticsPresenter presenter();
+ StatisticsPresenter presenter();
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteComponent.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteComponent.java
index f9ea83b3..73e92ca7 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteComponent.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteComponent.java
@@ -13,7 +13,7 @@
modules = { MailModule.class, NavigationModule.class },
dependencies = MailAppComponent.class) public interface WriteComponent {
- public WritePresenter presenter();
+ WritePresenter presenter();
- public void inject(WriteActivity activity);
+ void inject(WriteActivity activity);
}
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteView.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteView.java
index b1a9d137..8d939fac 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteView.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/write/WriteView.java
@@ -7,13 +7,13 @@
*/
public interface WriteView extends MvpView {
- public void showForm();
+ void showForm();
- public void showLoading();
+ void showLoading();
- public void showError(Throwable e);
+ void showError(Throwable e);
- public void showAuthenticationRequired();
+ void showAuthenticationRequired();
- public void finishBecauseSuccessful();
+ void finishBecauseSuccessful();
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/http/ProductBackendApi.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/http/ProductBackendApi.java
index 1233b0b6..a6aee234 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/http/ProductBackendApi.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/http/ProductBackendApi.java
@@ -34,5 +34,5 @@ public interface ProductBackendApi {
@GET("/sockeqwe/mosby/"
+ DependencyInjection.BASE_URL_BRANCH
+ "/sample-mvi/server/api/products{pagination}.json")
- public Observable> getProducts(@Path("pagination") int pagination);
+ Observable> getProducts(@Path("pagination") int pagination);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/interactor/details/ProductDetailsViewState.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/interactor/details/ProductDetailsViewState.java
index 44960a71..b1ca0928 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/interactor/details/ProductDetailsViewState.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/businesslogic/interactor/details/ProductDetailsViewState.java
@@ -29,7 +29,7 @@ public interface ProductDetailsViewState {
/**
* Loads the list of all menu items
*/
- public final class LoadingState implements ProductDetailsViewState {
+ final class LoadingState implements ProductDetailsViewState {
@Override public String toString() {
return "LoadingState{}";
@@ -39,7 +39,7 @@ public final class LoadingState implements ProductDetailsViewState {
/**
* Ane error has ocurred while loading the data
*/
- public final class ErrorState implements ProductDetailsViewState {
+ final class ErrorState implements ProductDetailsViewState {
private final Throwable error;
public ErrorState(Throwable error) {
@@ -60,7 +60,7 @@ public Throwable getError() {
/**
* Data has been loaded successfully and can now be displayed
*/
- public final class DataState implements ProductDetailsViewState {
+ final class DataState implements ProductDetailsViewState {
private final ProductDetail detail;
public DataState(ProductDetail detail) {
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryView.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryView.java
index c6e93de3..ba6a4b89 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryView.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryView.java
@@ -32,10 +32,10 @@ public interface CategoryView extends MvpView {
*
* @return Observable containing the category name as String
*/
- public Observable loadIntents();
+ Observable loadIntents();
/**
* Render the state on the view
*/
- public void render(CategoryViewState state);
+ void render(CategoryViewState state);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryViewState.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryViewState.java
index 1dfd8bdb..8330a6af 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryViewState.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/category/CategoryViewState.java
@@ -29,7 +29,7 @@ public interface CategoryViewState {
/**
* Loads the list of all menu items
*/
- public final class LoadingState implements CategoryViewState {
+ final class LoadingState implements CategoryViewState {
@Override public String toString() {
return "LoadingState{}";
@@ -39,7 +39,7 @@ public final class LoadingState implements CategoryViewState {
/**
* Ane error has ocurred while loading the data
*/
- public final class ErrorState implements CategoryViewState {
+ final class ErrorState implements CategoryViewState {
private final Throwable error;
public ErrorState(Throwable error) {
@@ -60,7 +60,7 @@ public Throwable getError() {
/**
* Data has been loaded successfully and can now be displayed
*/
- public final class DataState implements CategoryViewState {
+ final class DataState implements CategoryViewState {
private final List products;
public DataState(List products) {
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/checkoutbutton/CheckoutButtonView.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/checkoutbutton/CheckoutButtonView.java
index b019b8d7..543cd24f 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/checkoutbutton/CheckoutButtonView.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/checkoutbutton/CheckoutButtonView.java
@@ -29,7 +29,7 @@ public interface CheckoutButtonView extends MvpView {
/**
* Intent to load the data
*/
- public Observable loadIntent();
+ Observable loadIntent();
- public void render(double sum);
+ void render(double sum);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/detail/ProductDetailsView.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/detail/ProductDetailsView.java
index 32e1338d..90aa33f7 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/detail/ProductDetailsView.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/detail/ProductDetailsView.java
@@ -31,20 +31,20 @@ public interface ProductDetailsView extends MvpView {
/**
* The intent to load details of a certain product
*/
- public Observable loadDetailsIntent();
+ Observable loadDetailsIntent();
/**
* The intent to add a product to the shopping cart
*/
- public Observable addToShoppingCartIntent();
+ Observable addToShoppingCartIntent();
/**
* the intent to remove a product from the shopping cart
*/
- public Observable removeFromShoppingCartIntent();
+ Observable removeFromShoppingCartIntent();
/**
* Render the state n the UI
*/
- public void render(ProductDetailsViewState state);
+ void render(ProductDetailsViewState state);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/HomeView.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/HomeView.java
index 2a607c58..037e839f 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/HomeView.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/HomeView.java
@@ -33,31 +33,31 @@ public interface HomeView extends MvpView {
*
* @return The emitted item boolean can be ignored because it is always true
*/
- public Observable loadFirstPageIntent();
+ Observable loadFirstPageIntent();
/**
* The intent to load the next page
*
* @return The emitted item boolean can be ignored because it is always true
*/
- public Observable loadNextPageIntent();
+ Observable loadNextPageIntent();
/**
* The intent to react on pull-to-refresh
*
* @return The emitted item boolean can be ignored because it is always true
*/
- public Observable pullToRefreshIntent();
+ Observable pullToRefreshIntent();
/**
* The intent to load more items from a given group
*
* @return Observable with the name of the group
*/
- public Observable loadAllProductsFromCategoryIntent();
+ Observable loadAllProductsFromCategoryIntent();
/**
* Renders the viewState
*/
- public void render(HomeViewState viewState);
+ void render(HomeViewState viewState);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/PartialStateChanges.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/PartialStateChanges.java
index df4ea817..35f8f49d 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/PartialStateChanges.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/home/PartialStateChanges.java
@@ -30,7 +30,7 @@ public interface PartialStateChanges {
/**
* Indicates that the first page is loading
*/
- public final class FirstPageLoading implements PartialStateChanges {
+ final class FirstPageLoading implements PartialStateChanges {
@Override public String toString() {
return "FirstPageLoadingState{}";
@@ -40,7 +40,7 @@ public final class FirstPageLoading implements PartialStateChanges {
/**
* Indicates that an error has occurred while loading the first page
*/
- public final class FirstPageError implements PartialStateChanges {
+ final class FirstPageError implements PartialStateChanges {
private final Throwable error;
public FirstPageError(Throwable error) {
@@ -61,7 +61,7 @@ public Throwable getError() {
/**
* Indicates that the first page data has been loaded successfully
*/
- public final class FirstPageLoaded implements PartialStateChanges {
+ final class FirstPageLoaded implements PartialStateChanges {
private final List data;
public FirstPageLoaded(List data) {
@@ -76,7 +76,7 @@ public List getData() {
/**
* Next Page has been loaded successfully
*/
- public final class NextPageLoaded implements PartialStateChanges {
+ final class NextPageLoaded implements PartialStateChanges {
private final List data;
public NextPageLoaded(List data) {
@@ -91,7 +91,7 @@ public List getData() {
/**
* Error while loading new page
*/
- public final class NexPageLoadingError implements PartialStateChanges {
+ final class NexPageLoadingError implements PartialStateChanges {
private final Throwable error;
public NexPageLoadingError(Throwable error) {
@@ -106,19 +106,19 @@ public Throwable getError() {
/**
* Indicates that loading the next page has started
*/
- public final class NextPageLoading implements PartialStateChanges {
+ final class NextPageLoading implements PartialStateChanges {
}
/**
* Indicates that loading the newest items via pull to refresh has started
*/
- public final class PullToRefreshLoading implements PartialStateChanges {
+ final class PullToRefreshLoading implements PartialStateChanges {
}
/**
* Indicates that an error while loading the newest items via pull to refresh has occurred
*/
- public final class PullToRefeshLoadingError implements PartialStateChanges {
+ final class PullToRefeshLoadingError implements PartialStateChanges {
private final Throwable error;
public PullToRefeshLoadingError(Throwable error) {
@@ -133,7 +133,7 @@ public Throwable getError() {
/**
* Indicates that data has been loaded successfully over pull-to-refresh
*/
- public final class PullToRefreshLoaded implements PartialStateChanges {
+ final class PullToRefreshLoaded implements PartialStateChanges {
private final List data;
public PullToRefreshLoaded(List data) {
@@ -148,7 +148,7 @@ public List getData() {
/**
* Loading all Products of a given category has been started
*/
- public final class ProductsOfCategoryLoading implements PartialStateChanges {
+ final class ProductsOfCategoryLoading implements PartialStateChanges {
private final String categoryName;
public ProductsOfCategoryLoading(String categoryName) {
@@ -163,7 +163,7 @@ public String getCategoryName() {
/**
* An error while loading all products has been occurred
*/
- public final class ProductsOfCategoryLoadingError implements PartialStateChanges {
+ final class ProductsOfCategoryLoadingError implements PartialStateChanges {
private final String categoryName;
private final Throwable error;
@@ -184,7 +184,7 @@ public Throwable getError() {
/**
* Products of a given Category has been loaded
*/
- public final class ProductsOfCategoryLoaded implements PartialStateChanges {
+ final class ProductsOfCategoryLoaded implements PartialStateChanges {
private final List data;
private final String categoryName;
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/menu/MenuViewState.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/menu/MenuViewState.java
index db673ecd..dbcfedcd 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/menu/MenuViewState.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/menu/MenuViewState.java
@@ -29,7 +29,7 @@ public interface MenuViewState {
/**
* Loads the list of all menu items
*/
- public final class LoadingState implements MenuViewState{
+ final class LoadingState implements MenuViewState{
@Override public String toString() {
return "LoadingState{}";
@@ -39,7 +39,7 @@ public final class LoadingState implements MenuViewState{
/**
* Ane error has ocurred while loading the data
*/
- public final class ErrorState implements MenuViewState{
+ final class ErrorState implements MenuViewState{
private final Throwable error;
public ErrorState(Throwable error) {
@@ -60,7 +60,7 @@ public Throwable getError() {
/**
* Data has been loaded successfully and can now be displayed
*/
- public final class DataState implements MenuViewState {
+ final class DataState implements MenuViewState {
private final List categories;
public DataState(List categories) {
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbarView.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbarView.java
index 1e8630e1..62264cc2 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbarView.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbarView.java
@@ -28,15 +28,15 @@ public interface SelectedCountToolbarView extends MvpView {
/**
* The intent to clear the selection
*/
- public Observable clearSelectionIntent();
+ Observable clearSelectionIntent();
/**
* Intent to delete the selected items
*/
- public Observable deleteSelectedItemsIntent();
+ Observable deleteSelectedItemsIntent();
/**
* Render the selected state
*/
- public void render(int selectedCount);
+ void render(int selectedCount);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabelView.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabelView.java
index 77ab49aa..0e02b2e0 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabelView.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabelView.java
@@ -30,7 +30,7 @@ public interface ShoppingCartLabelView extends MvpView {
/**
* Intent to load the data
*/
- public Observable loadIntent();
+ Observable loadIntent();
- public void render(int intemsInShoppingCart);
+ void render(int intemsInShoppingCart);
}
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/ui/viewholder/ProductViewHolder.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/ui/viewholder/ProductViewHolder.java
index 8042a032..8a78d78b 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/ui/viewholder/ProductViewHolder.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/ui/viewholder/ProductViewHolder.java
@@ -38,7 +38,7 @@
public class ProductViewHolder extends RecyclerView.ViewHolder {
public interface ProductClickedListener {
- public void onProductClicked(Product product);
+ void onProductClicked(Product product);
}
public static ProductViewHolder create(LayoutInflater inflater, ProductClickedListener listener) {
diff --git a/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/CountriesPresenter.java b/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/CountriesPresenter.java
index c9817836..873219da 100644
--- a/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/CountriesPresenter.java
+++ b/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/CountriesPresenter.java
@@ -23,5 +23,5 @@
*/
public interface CountriesPresenter extends MvpPresenter{
- public void loadCountries(final boolean pullToRefresh);
+ void loadCountries(final boolean pullToRefresh);
}
diff --git a/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/customviewstate/MyCustomView.java b/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/customviewstate/MyCustomView.java
index 58067909..66db9cb5 100644
--- a/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/customviewstate/MyCustomView.java
+++ b/sample/src/main/java/com/hannesdorfmann/mosby3/sample/mvp/customviewstate/MyCustomView.java
@@ -26,7 +26,7 @@
public interface MyCustomView extends MvpView {
- public void showA(A a);
+ void showA(A a);
- public void showB(B b);
+ void showB(B b);
}
diff --git a/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/MvpViewStateDelegateCallback.java b/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/MvpViewStateDelegateCallback.java
index f48dfc5c..1679c212 100644
--- a/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/MvpViewStateDelegateCallback.java
+++ b/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/delegate/MvpViewStateDelegateCallback.java
@@ -38,17 +38,17 @@ public interface MvpViewStateDelegateCallbackShould only be called by {@link MvpViewStateInternalDelegate}
*/
- public void setViewState(VS viewState);
+ void setViewState(VS viewState);
/**
* Create the viewstate.
*/
- @NonNull public VS createViewState();
+ @NonNull VS createViewState();
/**
* This method will be called by {@link MvpViewStateInternalDelegate} to inform that restoring
@@ -58,12 +58,12 @@ public interface MvpViewStateDelegateCallbackTypically this is called on the first time the Activity or Fragment starts
* and therefore no view state instance previously exists
*/
- public void onNewViewStateInstance();
+ void onNewViewStateInstance();
}
diff --git a/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/RestorableViewState.java b/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/RestorableViewState.java
index eb91388c..84fa7b9a 100644
--- a/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/RestorableViewState.java
+++ b/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/RestorableViewState.java
@@ -37,7 +37,7 @@ public interface RestorableViewState extends ViewState {
*
* @param out The bundle where the viewstate should be stored in
*/
- public void saveInstanceState(@NonNull Bundle out);
+ void saveInstanceState(@NonNull Bundle out);
/**
* Restores the viewstate that has been saved before with {@link #saveInstanceState(Bundle)}
@@ -46,5 +46,5 @@ public interface RestorableViewState extends ViewState {
* @return null, if view state could not be restored or the restore viestate instance. Typically
* this method will return this
.
*/
- public RestorableViewState restoreInstanceState(Bundle in);
+ RestorableViewState restoreInstanceState(Bundle in);
}
diff --git a/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/ViewState.java b/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/ViewState.java
index 07e81a77..0fd2db9a 100644
--- a/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/ViewState.java
+++ b/viewstate/src/main/java/com/hannesdorfmann/mosby3/mvp/viewstate/ViewState.java
@@ -49,5 +49,5 @@ public interface ViewState {
* retained
* because the {@link Fragment#setRetainInstance(boolean)} has been set to true
*/
- public void apply(V view, boolean retained);
+ void apply(V view, boolean retained);
}
From 4ccea2cb3d3362a98d22dc65e7ac708cc2d5db94 Mon Sep 17 00:00:00 2001
From: jonathan-caryl
Date: Wed, 22 Mar 2017 10:13:44 +0000
Subject: [PATCH 3/6] switch from hardcoded 8.4.0 (#225)
---
sample-mvi/build.gradle | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sample-mvi/build.gradle b/sample-mvi/build.gradle
index 2a8266b7..7abcd88a 100644
--- a/sample-mvi/build.gradle
+++ b/sample-mvi/build.gradle
@@ -81,8 +81,8 @@ dependencies {
compile "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion"
- compile 'com.jakewharton:butterknife:8.4.0'
- apt 'com.jakewharton:butterknife-compiler:8.4.0'
+ compile 'com.jakewharton:butterknife:'+rootProject.ext.butterknifeVersion
+ apt 'com.jakewharton:butterknife-compiler:' + rootProject.ext.butterknifeVersion
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
From 9cf785f2ce327e938db2610eb4f4952e506d662f Mon Sep 17 00:00:00 2001
From: jonathan-caryl
Date: Wed, 22 Mar 2017 10:58:06 +0000
Subject: [PATCH 4/6] Use plurals for items strings (#224)
---
.../selectedcounttoolbar/SelectedCountToolbar.java | 7 +------
.../mvi/view/shoppingcartlabel/ShoppingCartLabel.java | 10 ++--------
sample-mvi/src/main/res/values/strings.xml | 4 ++++
3 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbar.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbar.java
index 3782ec31..1f910042 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbar.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/selectedcounttoolbar/SelectedCountToolbar.java
@@ -83,12 +83,7 @@ public SelectedCountToolbar(Context context, AttributeSet attrs) {
setVisibility(View.GONE);
}
} else {
- // TODO remove hardcoded strings - move to stings.xml with plurals
- if (selectedCount == 1) {
- setTitle(selectedCount + " Item");
- } else {
- setTitle(selectedCount + " Items");
- }
+ setTitle(getResources().getQuantityString(R.plurals.items, selectedCount, selectedCount));
if (getVisibility() != View.VISIBLE) {
animate().alpha(1f).withStartAction(() -> setVisibility(View.VISIBLE)).start();
diff --git a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabel.java b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabel.java
index a6294863..0e954594 100644
--- a/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabel.java
+++ b/sample-mvi/src/main/java/com/hannesdorfmann/mosby3/sample/mvi/view/shoppingcartlabel/ShoppingCartLabel.java
@@ -25,6 +25,7 @@
import com.hannesdorfmann.mosby3.ViewGroupMviDelegate;
import com.hannesdorfmann.mosby3.ViewGroupMviDelegateCallback;
import com.hannesdorfmann.mosby3.ViewGroupMviDelegateImpl;
+import com.hannesdorfmann.mosby3.sample.mvi.R;
import com.hannesdorfmann.mosby3.sample.mvi.SampleApplication;
import io.reactivex.Observable;
import timber.log.Timber;
@@ -65,15 +66,8 @@ public ShoppingCartLabel(Context context, AttributeSet attrs) {
}
@Override public void render(int itemsInShoppingCart) {
- // TODO move to strings.xml / internationalization with plurals
Timber.d("render %d items in shopping cart", itemsInShoppingCart);
- if (itemsInShoppingCart == 0) {
- setText("0 items");
- } else if (itemsInShoppingCart == 1) {
- setText("1 item");
- } else {
- setText(itemsInShoppingCart + " items");
- }
+ setText(getResources().getQuantityString(R.plurals.items, itemsInShoppingCart, itemsInShoppingCart));
}
@Override protected void onAttachedToWindow() {
diff --git a/sample-mvi/src/main/res/values/strings.xml b/sample-mvi/src/main/res/values/strings.xml
index d91e2315..fb40cd90 100644
--- a/sample-mvi/src/main/res/values/strings.xml
+++ b/sample-mvi/src/main/res/values/strings.xml
@@ -15,4 +15,8 @@
Search
Delete selected items
ProductDetailActivity
+
+ - %1$d Item
+ - %1$d Items
+
From 53575fee059987a7baa332fed8ce4c9e178f2871 Mon Sep 17 00:00:00 2001
From: jonathan-caryl
Date: Thu, 23 Mar 2017 00:54:14 +0000
Subject: [PATCH 5/6] =?UTF-8?q?Move=20ic=5Flauncher.png=20drawable=20?=
=?UTF-8?q?=E2=86=92=20mipmap=20(#226)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sample-mail/src/main/AndroidManifest.xml | 2 +-
.../model/mail/service/GcmFakeIntentService.java | 2 +-
.../{drawable-hdpi => mipmap-hdpi}/ic_launcher.png | Bin
.../{drawable-mdpi => mipmap-mdpi}/ic_launcher.png | Bin
.../ic_launcher.png | Bin
.../ic_launcher.png | Bin
.../ic_launcher.png | Bin
7 files changed, 2 insertions(+), 2 deletions(-)
rename sample-mail/src/main/res/{drawable-hdpi => mipmap-hdpi}/ic_launcher.png (100%)
rename sample-mail/src/main/res/{drawable-mdpi => mipmap-mdpi}/ic_launcher.png (100%)
rename sample-mail/src/main/res/{drawable-xhdpi => mipmap-xhdpi}/ic_launcher.png (100%)
rename sample-mail/src/main/res/{drawable-xxhdpi => mipmap-xxhdpi}/ic_launcher.png (100%)
rename sample-mail/src/main/res/{drawable-xxxhdpi => mipmap-xxxhdpi}/ic_launcher.png (100%)
diff --git a/sample-mail/src/main/AndroidManifest.xml b/sample-mail/src/main/AndroidManifest.xml
index 78d96c0e..6f7d4955 100644
--- a/sample-mail/src/main/AndroidManifest.xml
+++ b/sample-mail/src/main/AndroidManifest.xml
@@ -6,7 +6,7 @@
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/GcmFakeIntentService.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/GcmFakeIntentService.java
index 592923fb..a5b9e974 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/GcmFakeIntentService.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/model/mail/service/GcmFakeIntentService.java
@@ -66,7 +66,7 @@ public GcmFakeIntentService() {
builder.setLargeIcon(BitmapFactory.decodeResource(getApplicationContext().getResources(),
mail.getSender().getImageRes()));
- builder.setSmallIcon(R.drawable.ic_launcher)
+ builder.setSmallIcon(R.mipmap.ic_launcher)
.setLights(getResources().getColor(R.color.primary), 1800, 3500)
.setAutoCancel(true)
.setContentTitle(mail.getSubject())
diff --git a/sample-mail/src/main/res/drawable-hdpi/ic_launcher.png b/sample-mail/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from sample-mail/src/main/res/drawable-hdpi/ic_launcher.png
rename to sample-mail/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/sample-mail/src/main/res/drawable-mdpi/ic_launcher.png b/sample-mail/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from sample-mail/src/main/res/drawable-mdpi/ic_launcher.png
rename to sample-mail/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/sample-mail/src/main/res/drawable-xhdpi/ic_launcher.png b/sample-mail/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from sample-mail/src/main/res/drawable-xhdpi/ic_launcher.png
rename to sample-mail/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/sample-mail/src/main/res/drawable-xxhdpi/ic_launcher.png b/sample-mail/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from sample-mail/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to sample-mail/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/sample-mail/src/main/res/drawable-xxxhdpi/ic_launcher.png b/sample-mail/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from sample-mail/src/main/res/drawable-xxxhdpi/ic_launcher.png
rename to sample-mail/src/main/res/mipmap-xxxhdpi/ic_launcher.png
From ba86a4ce9eef1eafc9685c6d42a4907054111569 Mon Sep 17 00:00:00 2001
From: jonathan-caryl
Date: Thu, 23 Mar 2017 10:31:06 +0000
Subject: [PATCH 6/6] Use custom icons/names for leak canary (#228)
---
.../res/drawable-hdpi/leak_canary_icon.png | Bin 0 -> 5410 bytes
.../res/drawable-mdpi/leak_canary_icon.png | Bin 0 -> 3513 bytes
.../res/drawable-xhdpi/leak_canary_icon.png | Bin 0 -> 6840 bytes
.../res/drawable-xxhdpi/leak_canary_icon.png | Bin 0 -> 10806 bytes
.../res/drawable-xxxhdpi/leak_canary_icon.png | Bin 0 -> 10706 bytes
sample-mail/src/debug/res/values/strings.xml | 4 ++++
.../mosby3/sample/mail/MailApplication.java | 5 +++++
.../res/drawable-hdpi/leak_canary_icon.png | Bin 0 -> 5172 bytes
.../res/drawable-mdpi/leak_canary_icon.png | Bin 0 -> 3676 bytes
.../res/drawable-xhdpi/leak_canary_icon.png | Bin 0 -> 7089 bytes
.../res/drawable-xxhdpi/leak_canary_icon.png | Bin 0 -> 8866 bytes
.../res/drawable-xxxhdpi/leak_canary_icon.png | Bin 0 -> 16044 bytes
sample-mvi/src/debug/res/values/strings.xml | 4 ++++
.../res/drawable-hdpi/leak_canary_icon.png | Bin 0 -> 6695 bytes
.../res/drawable-mdpi/leak_canary_icon.png | Bin 0 -> 4292 bytes
.../res/drawable-xhdpi/leak_canary_icon.png | Bin 0 -> 9331 bytes
.../res/drawable-xxhdpi/leak_canary_icon.png | Bin 0 -> 12840 bytes
.../res/drawable-xxxhdpi/leak_canary_icon.png | Bin 0 -> 22082 bytes
sample/src/debug/res/values/strings.xml | 4 ++++
.../mosby3/sample/SampleApplication.java | 5 +++++
20 files changed, 22 insertions(+)
create mode 100755 sample-mail/src/debug/res/drawable-hdpi/leak_canary_icon.png
create mode 100755 sample-mail/src/debug/res/drawable-mdpi/leak_canary_icon.png
create mode 100755 sample-mail/src/debug/res/drawable-xhdpi/leak_canary_icon.png
create mode 100755 sample-mail/src/debug/res/drawable-xxhdpi/leak_canary_icon.png
create mode 100755 sample-mail/src/debug/res/drawable-xxxhdpi/leak_canary_icon.png
create mode 100644 sample-mail/src/debug/res/values/strings.xml
create mode 100644 sample-mvi/src/debug/res/drawable-hdpi/leak_canary_icon.png
create mode 100644 sample-mvi/src/debug/res/drawable-mdpi/leak_canary_icon.png
create mode 100644 sample-mvi/src/debug/res/drawable-xhdpi/leak_canary_icon.png
create mode 100644 sample-mvi/src/debug/res/drawable-xxhdpi/leak_canary_icon.png
create mode 100644 sample-mvi/src/debug/res/drawable-xxxhdpi/leak_canary_icon.png
create mode 100644 sample-mvi/src/debug/res/values/strings.xml
create mode 100644 sample/src/debug/res/drawable-hdpi/leak_canary_icon.png
create mode 100644 sample/src/debug/res/drawable-mdpi/leak_canary_icon.png
create mode 100644 sample/src/debug/res/drawable-xhdpi/leak_canary_icon.png
create mode 100644 sample/src/debug/res/drawable-xxhdpi/leak_canary_icon.png
create mode 100644 sample/src/debug/res/drawable-xxxhdpi/leak_canary_icon.png
create mode 100644 sample/src/debug/res/values/strings.xml
diff --git a/sample-mail/src/debug/res/drawable-hdpi/leak_canary_icon.png b/sample-mail/src/debug/res/drawable-hdpi/leak_canary_icon.png
new file mode 100755
index 0000000000000000000000000000000000000000..abf86ed68bbd9e15a922d1fe2ab2b49f05ea2e1c
GIT binary patch
literal 5410
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
literal 0
HcmV?d00001
diff --git a/sample-mail/src/debug/res/drawable-xxhdpi/leak_canary_icon.png b/sample-mail/src/debug/res/drawable-xxhdpi/leak_canary_icon.png
new file mode 100755
index 0000000000000000000000000000000000000000..7635659ae3d3e26f5e1759bf42fb16ec032f42a0
GIT binary patch
literal 10806
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
G3jPlWT%wQw
literal 0
HcmV?d00001
diff --git a/sample-mail/src/debug/res/values/strings.xml b/sample-mail/src/debug/res/values/strings.xml
new file mode 100644
index 00000000..2ed8f08b
--- /dev/null
+++ b/sample-mail/src/debug/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ Mosby Mail Leaks
+
diff --git a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/MailApplication.java b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/MailApplication.java
index 8ad87814..2a33e00e 100644
--- a/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/MailApplication.java
+++ b/sample-mail/src/main/java/com/hannesdorfmann/mosby3/sample/mail/MailApplication.java
@@ -18,6 +18,11 @@ public class MailApplication extends Application {
@Override public void onCreate() {
super.onCreate();
+ if (LeakCanary.isInAnalyzerProcess(this)) {
+ // This process is dedicated to LeakCanary for heap analysis.
+ // You should not init your app in this process.
+ return;
+ }
mailComponent = DaggerMailAppComponent.create();
refWatcher = LeakCanary.install(this);
}
diff --git a/sample-mvi/src/debug/res/drawable-hdpi/leak_canary_icon.png b/sample-mvi/src/debug/res/drawable-hdpi/leak_canary_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..24e82bc525782727d4298b076310fb42cd6cc983
GIT binary patch
literal 5172
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