Skip to content

Commit

Permalink
Merge pull request #11 from naeemark/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
naeemark authored Nov 29, 2017
2 parents f21c800 + 066ef27 commit b4f5e94
Show file tree
Hide file tree
Showing 55 changed files with 1,470 additions and 350 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,6 @@ dependencies {

implementation 'com.squareup.okhttp3:mockwebserver:3.9.0'
androidTestImplementation 'com.squareup.spoon:spoon-client:1.4.0'

compile 'org.apache.commons:commons-lang3:3.4'
}
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
</intent-filter>
</activity>
<activity android:name=".features.login.view.impl.LoginActivity" />
<activity android:name=".features.timeline.view.impl.TimelineActivity" />
<activity android:name=".features.timeline.activity.view.impl.TimelineActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.content.Context;

import com.tline.android.app.TLineApp;
import com.tline.android.utils.LocaleHelper;
import com.tline.android.utils.PreferencesUtils;

import javax.inject.Singleton;
Expand All @@ -19,4 +20,6 @@ public interface AppComponent {

PreferencesUtils exposePreferencesUtils();

LocaleHelper exposeLocaleHelper();

}
14 changes: 14 additions & 0 deletions app/src/main/java/com/tline/android/app/view/BaseFragmentView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.tline.android.app.view;

/**
* Created by Naeem(naeemark@gmail.com)
* On 30/11/2017.
* For TLine
*/

public interface BaseFragmentView {

void showLoading();

void hideLoading();
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@
import com.tline.android.app.presenter.loader.PresenterLoader;
import com.tline.android.app.injection.AppComponent;
import com.tline.android.app.presenter.BasePresenter;
import com.tline.android.app.view.BaseFragmentView;

import java.util.concurrent.atomic.AtomicBoolean;

public abstract class BaseFragment<P extends BasePresenter<V>, V> extends Fragment implements LoaderManager.LoaderCallbacks<P> {
public abstract class BaseFragment<P extends BasePresenter<V>, V> extends Fragment implements LoaderManager.LoaderCallbacks<P>, BaseFragmentView {
/**
* Do we need to call {@link #doStart()} from the {@link #onLoadFinished(Loader, BasePresenter)} method.
* Will be true if presenter wasn't loaded when {@link #onStart()} is reached
Expand Down Expand Up @@ -120,4 +121,14 @@ public final void onLoaderReset(Loader<P> loader) {
* @param appComponent the app component
*/
protected abstract void setupComponent(@NonNull AppComponent appComponent);

@Override
public void showLoading() {
((BaseActivity)getActivity()).showLoading();
}

@Override
public void hideLoading() {
((BaseActivity)getActivity()).hideLoading();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@ public class AppConstants {

public static final String SHARED_PREFS_NAME = "This_app_Prefs";

public static final String TWITTER_HANDLE_OLX_EGYPT = "@OLXEgypt";

public static final String TWITTER_HANDLE_ANDROID_DEV = "@AndroidDev";

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
Expand All @@ -18,7 +16,7 @@
import com.tline.android.features.login.injection.LoginViewModule;
import com.tline.android.features.login.presenter.LoginPresenter;
import com.tline.android.features.login.view.LoginView;
import com.tline.android.features.timeline.view.impl.TimelineActivity;
import com.tline.android.features.timeline.activity.view.impl.TimelineActivity;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterApiClient;
Expand Down Expand Up @@ -77,33 +75,13 @@ protected int getContentView() {
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
super.onViewReady(savedInstanceState, intent);

// setActionBarIcon(R.mipmap.ic_launcher);
setButtonListeners();

test();

if (TwitterCore.getInstance().getSessionManager().getActiveSession() != null) {
launchHomeActivity();
}
}

private void test() {
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
StatusesService statusesService = twitterApiClient.getStatusesService();
Call<Tweet> call = statusesService.show(524971209851543553L, null, null, null);
call.enqueue(new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
//Do something with result
Timber.i("R: " + result.data.text);
}

public void failure(TwitterException exception) {
Timber.i("E: " + exception.getMessage());
}
});
}

private void setButtonListeners() {

mLoginButton.setCallback(new Callback<TwitterSession>() {
Expand Down Expand Up @@ -145,7 +123,7 @@ public void updateUi() {
if (activeSession == null) {
mLogoutButton.setVisibility(View.GONE);
mLoginButton.setVisibility(View.VISIBLE);
mUserDpImageView.setBackgroundResource(R.drawable.ic_launcher_round_web);
mUserDpImageView.setImageResource(R.drawable.ic_launcher_round_web);
} else {

mUserNameTextView.setText(getString(R.string.prompt_welcome_prefix, activeSession.getUserName()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public void onStart(boolean viewCreated) {

if (viewCreated) {
startLoading();
if (mInteractor.isSplashDone()) {
if (!mInteractor.isSplashDone()) {
doSplash();
} else {
launchNextActivity();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.tline.android.features.timeline.injection;
package com.tline.android.features.timeline.activity.injection;

import com.tline.android.app.injection.ActivityScope;
import com.tline.android.app.injection.AppComponent;
import com.tline.android.features.timeline.view.impl.TimelineActivity;
import com.tline.android.features.timeline.activity.view.impl.TimelineActivity;

import dagger.Component;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.tline.android.features.timeline.activity.injection;

import android.support.annotation.NonNull;

import com.tline.android.app.presenter.loader.PresenterFactory;
import com.tline.android.features.timeline.activity.interactor.TimelineInteractor;
import com.tline.android.features.timeline.activity.interactor.impl.TimelineInteractorImpl;
import com.tline.android.features.timeline.activity.presenter.TimelinePresenter;
import com.tline.android.features.timeline.activity.presenter.impl.TimelinePresenterImpl;
import com.tline.android.utils.LocaleHelper;
import com.tline.android.utils.PreferencesUtils;

import dagger.Module;
import dagger.Provides;

@Module
public final class TimelineViewModule {
@Provides
public TimelineInteractor provideInteractor(PreferencesUtils preferencesUtils, LocaleHelper localeHelper) {
return new TimelineInteractorImpl(preferencesUtils, localeHelper);
}

@Provides
public PresenterFactory<TimelinePresenter> providePresenterFactory(@NonNull final TimelineInteractor interactor) {
return new PresenterFactory<TimelinePresenter>() {
@NonNull
@Override
public TimelinePresenter create() {
return new TimelinePresenterImpl(interactor);
}
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.tline.android.features.timeline.activity.interactor;

import android.app.Activity;

import com.tline.android.app.interactor.BaseInteractor;

public interface TimelineInteractor extends BaseInteractor {

void saveSelectedTabIndex(int selectedTabIndex);

int retrieveSelectedTabIndex();

void switchAppLocale(Activity activity);

void invalidatePreference();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.tline.android.features.timeline.activity.interactor.impl;

import android.app.Activity;

import javax.inject.Inject;

import com.tline.android.app.interactor.impl.BaseInteractorImpl;
import com.tline.android.features.timeline.activity.interactor.TimelineInteractor;
import com.tline.android.utils.LocaleHelper;
import com.tline.android.utils.PreferencesUtils;

public final class TimelineInteractorImpl extends BaseInteractorImpl implements TimelineInteractor {

private final PreferencesUtils mPreferencesUtils;
private final LocaleHelper mLocaleHelper;

@Inject
public TimelineInteractorImpl(PreferencesUtils preferencesUtils, LocaleHelper localeHelper) {

mPreferencesUtils = preferencesUtils;
mLocaleHelper = localeHelper;
}

@Override
public void saveSelectedTabIndex(int selectedTabIndex) {

mPreferencesUtils.putInt(PreferencesUtils.PrefKeys.SELECTED_TAB_INDEX.name(), selectedTabIndex);
}

@Override
public int retrieveSelectedTabIndex() {
int index = mPreferencesUtils.getInt(PreferencesUtils.PrefKeys.SELECTED_TAB_INDEX.name());
return (index <= 0) ? 0 : index;
}

@Override
public void switchAppLocale(Activity activity) {
mLocaleHelper.switchLocale(activity);
}

@Override
public void invalidatePreference() {
mPreferencesUtils.clear();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.tline.android.features.timeline.activity.presenter;

import android.app.Activity;

import com.tline.android.app.presenter.BasePresenter;
import com.tline.android.features.timeline.activity.view.TimelineView;

public interface TimelinePresenter extends BasePresenter<TimelineView> {

void saveSelectedTabIndex(int selectedTabIndex);

void logout();

void switchAppLocale(Activity activity);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.tline.android.features.timeline.activity.presenter.impl;

import android.app.Activity;
import android.support.annotation.NonNull;

import com.tline.android.app.presenter.impl.BasePresenterImpl;
import com.tline.android.features.timeline.activity.presenter.TimelinePresenter;
import com.tline.android.features.timeline.activity.view.TimelineView;
import com.tline.android.features.timeline.activity.interactor.TimelineInteractor;

import javax.inject.Inject;

public final class TimelinePresenterImpl extends BasePresenterImpl<TimelineView> implements TimelinePresenter {
/**
* The interactor
*/
@NonNull
private final TimelineInteractor mInteractor;

// The view is available using the mView variable

@Inject
public TimelinePresenterImpl(@NonNull TimelineInteractor interactor) {
mInteractor = interactor;
}

@Override
public void onStart(boolean viewCreated) {
super.onStart(viewCreated);

if (viewCreated) {
initTimeline();
}
}

@Override
public void saveSelectedTabIndex(int selectedTabIndex) {
mInteractor.saveSelectedTabIndex(selectedTabIndex);
}

@Override
public void logout() {
assert mView != null;
mView.logoutTwitter();
mInteractor.invalidatePreference();
mView.launchLoginActivity();
}

@Override
public void switchAppLocale(Activity activity) {
mInteractor.switchAppLocale(activity);
}


private void initTimeline() {

assert mView != null;
mView.setSelectedNavItemId(mInteractor.retrieveSelectedTabIndex());
mView.showInitialFragment();
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.tline.android.features.timeline.activity.view;

import android.support.annotation.UiThread;

import com.tline.android.app.view.BaseView;

@UiThread
public interface TimelineView extends BaseView {

void showInitialFragment();

void setSelectedNavItemId(int mSelectedNavItemId);

void launchLoginActivity();
}
Loading

0 comments on commit b4f5e94

Please sign in to comment.