Skip to content

Commit

Permalink
Added the FavoritesService to the "User logged in" lifetime
Browse files Browse the repository at this point in the history
  • Loading branch information
AllanHasegawa committed Jul 31, 2017
1 parent a8180a9 commit edabdea
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 36 deletions.
21 changes: 21 additions & 0 deletions app/src/main/java/io/catter2/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,22 @@
import io.catter2.cat_api.CacheTheCatAPI;
import io.catter2.cat_api.RetrofitTheCatAPI;
import io.catter2.cat_api.TheCatAPI;
import io.catter2.favorites.FavoritesRepository;
import io.catter2.favorites.SharedPrefFavoritesRepository;

public class App extends Application {
private static TheCatAPI theCatAPI;
private static FavoritesRepository favoritesRepository;

public static TheCatAPI getTheCatAPIService() {
return App.theCatAPI;
}

public static FavoritesRepository getFavoritesRepository() {
return App.favoritesRepository;
}


@Override
public void onCreate() {
super.onCreate();
Expand All @@ -22,4 +30,17 @@ public void onCreate() {
App.theCatAPI = theCatAPICache;
}

public void initializeFavoritesRepository(String userToken) {
if (App.favoritesRepository != null) {
throw new RuntimeException("FavoritesRepository already initialized.");
}
App.favoritesRepository = new SharedPrefFavoritesRepository(this, userToken);
}

public void destroyFavoritesRepository() {
if (App.favoritesRepository != null) {
App.favoritesRepository.clearChangeListener();
App.favoritesRepository = null;
}
}
}
31 changes: 13 additions & 18 deletions app/src/main/java/io/catter2/FavoritesActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,19 @@

import java.util.List;

import io.catter2.favorites.FavoritesRepository;
import io.catter2.favorites.GetFavoritesUseCase;
import io.catter2.favorites.SharedPrefFavoritesRepository;

public class FavoritesActivity extends AppCompatActivity {

private static String TAG = "ImagesRvAdapter";
private static String ARG_USER_TOKEN = "favorites-user-token";

static public void launch(Context context, String userToken, boolean clearTop) {
static public void launch(Context context) {
Intent intent = new Intent(context, FavoritesActivity.class);
intent.putExtra(ARG_USER_TOKEN, userToken);
if (clearTop) {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
context.startActivity(intent);
}

private RecyclerView recyclerView;
private ImagesRvAdapter rvAdapter;
private String userToken;

private GetFavoritesUseCase getFavoritesUseCase;

Expand All @@ -48,7 +40,7 @@ protected void onCreate(Bundle savedInstanceState) {
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ListActivity.launch(FavoritesActivity.this, userToken);
ListActivity.launch(FavoritesActivity.this);
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Expand All @@ -58,14 +50,12 @@ public void onClick(View view) {
rvAdapter = new ImagesRvAdapter(null);
recyclerView.setAdapter(rvAdapter);

String extraUserToken = getIntent().getStringExtra(ARG_USER_TOKEN);
if (extraUserToken != null) {
userToken = extraUserToken;
}
Log.d(TAG, "UserToken: " + userToken);
getFavoritesUseCase = new GetFavoritesUseCase(App.getFavoritesRepository());
}

FavoritesRepository favoritesRepository = new SharedPrefFavoritesRepository(this, userToken);
getFavoritesUseCase = new GetFavoritesUseCase(favoritesRepository);
@Override
protected void onResume() {
super.onResume();
getFavoritesUseCase.getFavorites(new GetFavoritesUseCase.Callback() {
@Override
public void favoriteUrlsUpdated(List<String> favoriteUrls) {
Expand All @@ -76,8 +66,13 @@ public void favoriteUrlsUpdated(List<String> favoriteUrls) {
}

@Override
protected void onDestroy() {
protected void onPause() {
getFavoritesUseCase.clear();
super.onPause();
}

@Override
protected void onDestroy() {
getFavoritesUseCase = null;
super.onDestroy();
}
Expand Down
20 changes: 3 additions & 17 deletions app/src/main/java/io/catter2/ListActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.widget.ImageView;

Expand All @@ -18,20 +17,15 @@

import io.catter2.cat_api.FetchCatImagesUseCase;
import io.catter2.favorites.AddFavoriteUseCase;
import io.catter2.favorites.FavoritesRepository;
import io.catter2.favorites.SharedPrefFavoritesRepository;

public class ListActivity extends AppCompatActivity {
private static String TAG = "List";
private static String ARG_USER_TOKEN = "list-user-token";

static public void launch(Context context, String userToken) {
static public void launch(Context context) {
Intent intent = new Intent(context, ListActivity.class);
intent.putExtra(ARG_USER_TOKEN, userToken);
context.startActivity(intent);
}

private String userToken;
private RecyclerView recyclerView;

private AddFavoriteUseCase addFavoriteUseCase;
Expand All @@ -45,12 +39,6 @@ protected void onCreate(Bundle savedInstanceState) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

String extraUserToken = getIntent().getStringExtra(ARG_USER_TOKEN);
if (extraUserToken != null) {
userToken = extraUserToken;
}
Log.d(TAG, "UserToken: " + userToken);

recyclerView = (RecyclerView) findViewById(R.id.list_rv);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
final ImagesRvAdapter adapter = new ImagesRvAdapter(new ImagesRvAdapter.ImageOnClick() {
Expand All @@ -61,9 +49,7 @@ public void imageClicked(ImageView view, String url) {
});
recyclerView.setAdapter(adapter);


FavoritesRepository favoritesRepository = new SharedPrefFavoritesRepository(this, userToken);
addFavoriteUseCase = new AddFavoriteUseCase(favoritesRepository);
addFavoriteUseCase = new AddFavoriteUseCase(App.getFavoritesRepository());
fetchCatImagesUseCase = new FetchCatImagesUseCase(App.getTheCatAPIService());

fetchCatImagesUseCase.getImagesUrls(new FetchCatImagesUseCase.Callback() {
Expand All @@ -78,7 +64,7 @@ public void imagesUrls(List<String> urls) {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
FavoritesActivity.launch(this, userToken, true);
this.onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
Expand Down
9 changes: 8 additions & 1 deletion app/src/main/java/io/catter2/LoginActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ public void onClick(View view) {
});
}

@Override
protected void onResume() {
((App) getApplication()).destroyFavoritesRepository();
super.onResume();
}

private void attemptLogin() {
errorTv.setVisibility(View.GONE);
String username = usernameActv.getText().toString();
Expand All @@ -58,7 +64,8 @@ private void attemptLogin() {
String token = uc.login(username, password);

if (token != null) {
FavoritesActivity.launch(this, token, false);
((App) getApplication()).initializeFavoritesRepository(token);
FavoritesActivity.launch(this);
} else {
errorTv.setVisibility(View.VISIBLE);
}
Expand Down

0 comments on commit edabdea

Please sign in to comment.