Add ZimHostContract, ZimHostPresenter and ZimHostModule

This commit is contained in:
Adeel Zafar 2019-08-12 17:07:37 +05:00
parent 0cf9393bfd
commit 4486c06b3c
6 changed files with 85 additions and 13 deletions

View File

@ -18,6 +18,7 @@ import org.kiwix.kiwixmobile.search.SearchActivity;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.splash.SplashActivity;
import org.kiwix.kiwixmobile.webserver.ZimHostActivity;
import org.kiwix.kiwixmobile.webserver.ZimHostModule;
import org.kiwix.kiwixmobile.zim_manager.ZimManageActivity;
/**
@ -73,6 +74,6 @@ public abstract class ActivityBindingModule {
public abstract HelpActivity provideHelpActivity();
@PerActivity
@ContributesAndroidInjector(modules = MainModule.class)
@ContributesAndroidInjector(modules = ZimHostModule.class)
public abstract ZimHostActivity provideZimHostActivity();
}

View File

@ -10,15 +10,15 @@ import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskList
* The contract between {@link MainActivity} and {@link MainPresenter}.
*/
public class MainContract {
class MainContract {
public interface View extends BaseContract.View<Presenter> {
interface View extends BaseContract.View<Presenter> {
void addBooks(List<BooksOnDiskListItem> books);
void refreshBookmarksUrl(List<String> urls);
}
public interface Presenter extends BaseContract.Presenter<View> {
interface Presenter extends BaseContract.Presenter<View> {
void loadBooks();
void saveBooks(List<BooksOnDiskListItem.BookOnDisk> books);

View File

@ -47,11 +47,8 @@ import kotlin.Unit;
import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.base.BaseActivity;
import org.kiwix.kiwixmobile.main.MainActivity;
import org.kiwix.kiwixmobile.main.MainContract;
import org.kiwix.kiwixmobile.wifi_hotspot.HotspotService;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.ZimFileSelectFragment;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BookOnDiskDelegate;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskAdapter;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskListItem;
import static org.kiwix.kiwixmobile.utils.StyleUtils.dialogStyle;
@ -59,7 +56,7 @@ import static org.kiwix.kiwixmobile.webserver.WebServerHelper.getAddress;
import static org.kiwix.kiwixmobile.webserver.WebServerHelper.isServerStarted;
public class ZimHostActivity extends BaseActivity implements
ServerStateListener, MainContract.View {
ServerStateListener, ZimHostContract.View {
@BindView(R.id.startServerButton)
Button startServerButton;
@ -67,7 +64,7 @@ public class ZimHostActivity extends BaseActivity implements
TextView serverTextView;
@Inject
MainContract.Presenter presenter;
ZimHostContract.Presenter presenter;
public static final String ACTION_TURN_ON_AFTER_O = "Turn_on_hotspot_after_oreo";
public static final String ACTION_TURN_OFF_AFTER_O = "Turn_off_hotspot_after_oreo";
@ -510,8 +507,4 @@ public class ZimHostActivity extends BaseActivity implements
@Override public void addBooks(List<BooksOnDiskListItem> books) {
booksAdapter.setItems(books);
}
@Override public void refreshBookmarksUrl(List<String> urls) {
//Do nothing
}
}

View File

@ -0,0 +1,18 @@
package org.kiwix.kiwixmobile.webserver;
import java.util.List;
import org.kiwix.kiwixmobile.base.BaseContract;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskListItem;
class ZimHostContract {
interface View
extends BaseContract.View<org.kiwix.kiwixmobile.webserver.ZimHostContract.Presenter> {
void addBooks(List<BooksOnDiskListItem> books);
}
interface Presenter
extends BaseContract.Presenter<org.kiwix.kiwixmobile.webserver.ZimHostContract.View> {
void loadBooks();
}
}

View File

@ -0,0 +1,16 @@
package org.kiwix.kiwixmobile.webserver;
import dagger.Module;
import dagger.Provides;
import org.kiwix.kiwixmobile.di.PerActivity;
@Module
public class ZimHostModule {
@PerActivity
@Provides
ZimHostContract.Presenter provideZimHostPresenter(ZimHostPresenter zimHostPresenter) {
return zimHostPresenter;
}
}

View File

@ -0,0 +1,44 @@
package org.kiwix.kiwixmobile.webserver;
import android.util.Log;
import io.reactivex.SingleObserver;
import io.reactivex.disposables.Disposable;
import java.util.List;
import javax.inject.Inject;
import org.kiwix.kiwixmobile.base.BasePresenter;
import org.kiwix.kiwixmobile.data.DataSource;
import org.kiwix.kiwixmobile.di.PerActivity;
import org.kiwix.kiwixmobile.zim_manager.fileselect_view.adapter.BooksOnDiskListItem;
@PerActivity
class ZimHostPresenter extends BasePresenter<ZimHostContract.View>
implements ZimHostContract.Presenter {
private static final String TAG = "ZimHostPresenter";
private final DataSource dataSource;
@Inject ZimHostPresenter(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public void loadBooks() {
dataSource.getLanguageCategorizedBooks()
.subscribe(new SingleObserver<List<BooksOnDiskListItem>>() {
@Override
public void onSubscribe(Disposable d) {
compositeDisposable.add(d);
}
@Override
public void onSuccess(List<BooksOnDiskListItem> books) {
view.addBooks(books);
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "Unable to load books", e);
}
});
}
}