Fix some issues
This commit is contained in:
parent
a7ad3f8c9d
commit
248b7e98b1
|
@ -23,9 +23,7 @@ import android.content.DialogInterface;
|
|||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
|
@ -41,7 +39,6 @@ import android.support.v4.app.ActivityCompat;
|
|||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.view.ViewPager;
|
||||
|
@ -56,7 +53,6 @@ import android.text.Editable;
|
|||
import android.text.InputFilter;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Patterns;
|
||||
import android.util.SparseArray;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -83,17 +79,10 @@ import org.json.JSONArray;
|
|||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Method;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
@ -115,7 +104,6 @@ import fr.gouv.etalab.mastodon.client.APIResponse;
|
|||
import fr.gouv.etalab.mastodon.client.Entities.Account;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Filters;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.ManageTimelines;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Peertube;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.RemoteInstance;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Results;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Status;
|
||||
|
@ -135,7 +123,6 @@ import fr.gouv.etalab.mastodon.fragments.DisplayNotificationsFragment;
|
|||
import fr.gouv.etalab.mastodon.fragments.DisplayPeertubeNotificationsFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayReorderTabFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayStatusFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.SettingsFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.SettingsPeertubeFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.TabLayoutNotificationsFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.TabLayoutScheduleFragment;
|
||||
|
@ -156,9 +143,7 @@ import fr.gouv.etalab.mastodon.services.BackupStatusService;
|
|||
import fr.gouv.etalab.mastodon.services.LiveNotificationService;
|
||||
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.InstancesDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.SearchDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
||||
import fr.gouv.etalab.mastodon.sqlite.StatusCacheDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.TimelinesDAO;
|
||||
|
||||
import static fr.gouv.etalab.mastodon.asynctasks.ManageFiltersAsyncTask.action.GET_ALL_FILTER;
|
||||
|
@ -203,13 +188,10 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
private RelativeLayout main_app_container;
|
||||
private Stack<Integer> stackBack = new Stack<>();
|
||||
public static List<Filters> filters = new ArrayList<>();
|
||||
private static final int ERROR_DIALOG_REQUEST_CODE = 97;
|
||||
|
||||
public static int countNewStatus;
|
||||
public static int countNewNotifications;
|
||||
public static String lastHomeId = null, lastNotificationId = null;
|
||||
boolean show_boosts, show_replies , show_nsfw;
|
||||
String show_filtered;
|
||||
private AppBarLayout appBar;
|
||||
private String userId;
|
||||
private String instance;
|
||||
|
@ -223,7 +205,6 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
private String instance_id;
|
||||
private int style;
|
||||
private Activity activity;
|
||||
private HashMap<String, Integer> tabPosition = new HashMap<>();
|
||||
public static HashMap<Integer, RetrieveFeedsAsyncTask.Type> typePosition = new HashMap<>();
|
||||
private FloatingActionButton federatedTimelines;
|
||||
public static UpdateAccountInfoAsyncTask.SOCIAL social;
|
||||
|
@ -352,7 +333,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
|
||||
if( social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA || social == UpdateAccountInfoAsyncTask.SOCIAL.GNU || social == UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) {
|
||||
new SyncTimelinesAsyncTask(BaseMainActivity.this, BaseMainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
new SyncTimelinesAsyncTask(BaseMainActivity.this, 0, BaseMainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
|
||||
}else if (social == UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE){
|
||||
TabLayout.Tab pTabsub = tabLayout.newTab();
|
||||
|
@ -1346,7 +1327,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
DrawerLayout drawer = findViewById(R.id.drawer_layout);
|
||||
DisplayReorderTabFragment displayReorderTabFragment = (DisplayReorderTabFragment)getSupportFragmentManager().findFragmentByTag("REORDER_TIMELINES");
|
||||
if (displayReorderTabFragment != null && displayReorderTabFragment.isVisible() && DisplayReorderTabFragment.updated) {
|
||||
new SyncTimelinesAsyncTask(BaseMainActivity.this, BaseMainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
new SyncTimelinesAsyncTask(BaseMainActivity.this, tabLayout.getSelectedTabPosition(), BaseMainActivity.this ).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
if (drawer.isDrawerOpen(GravityCompat.START)) {
|
||||
|
@ -1787,7 +1768,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
|
||||
@Override
|
||||
public void syncedTimelines(List<ManageTimelines> manageTimelines) {
|
||||
public void syncedTimelines(List<ManageTimelines> manageTimelines, int position) {
|
||||
DisplayReorderTabFragment.updated = false;
|
||||
new ManageTimelines().createTabs(BaseMainActivity.this, manageTimelines);
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||
|
@ -1797,6 +1778,11 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
final NavigationView navigationView = findViewById(R.id.nav_view);
|
||||
|
||||
timelines = manageTimelines;
|
||||
if( position >= manageTimelines.size()){
|
||||
position = manageTimelines.size()-1;
|
||||
}
|
||||
if( position < 0)
|
||||
position = 0;
|
||||
|
||||
if( !optimize_loading)
|
||||
viewPager.setOffscreenPageLimit(countPage);
|
||||
|
@ -1909,6 +1895,29 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
}
|
||||
});
|
||||
|
||||
if( tabLayout.getTabCount() > position) {
|
||||
TabLayout.Tab tab = tabLayout.getTabAt(position);
|
||||
if( tab != null) {
|
||||
tab.select();
|
||||
if( tab.getCustomView() != null){
|
||||
ImageView icon = tab.getCustomView().findViewById(R.id.tab_icon);
|
||||
if( icon != null){
|
||||
if( theme == THEME_BLACK)
|
||||
icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon), PorterDuff.Mode.SRC_IN);
|
||||
else
|
||||
icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.mastodonC4), PorterDuff.Mode.SRC_IN);
|
||||
}else{
|
||||
TextView tv = tabLayout.getChildAt(0).findViewById(android.R.id.title);
|
||||
if( tv != null)
|
||||
if( theme == THEME_BLACK)
|
||||
tv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon));
|
||||
else
|
||||
tv.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.mastodonC4));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Scroll to top when top bar is clicked for favourites/blocked/muted
|
||||
toolbarTitle.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
|
|
|
@ -17,16 +17,13 @@ package fr.gouv.etalab.mastodon.asynctasks;
|
|||
import android.content.Context;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
||||
import fr.gouv.etalab.mastodon.client.API;
|
||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||
|
||||
import fr.gouv.etalab.mastodon.client.Entities.ManageTimelines;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.RemoteInstance;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.TagTimeline;
|
||||
|
@ -35,7 +32,6 @@ import fr.gouv.etalab.mastodon.sqlite.InstancesDAO;
|
|||
import fr.gouv.etalab.mastodon.sqlite.SearchDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
||||
import fr.gouv.etalab.mastodon.sqlite.TimelinesDAO;
|
||||
|
||||
import static fr.gouv.etalab.mastodon.sqlite.Sqlite.DB_NAME;
|
||||
|
||||
|
||||
|
@ -48,13 +44,15 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
|
||||
|
||||
private OnSyncTimelineInterface listener;
|
||||
private int position;
|
||||
private WeakReference<Context> contextReference;
|
||||
private List<ManageTimelines> manageTimelines;
|
||||
|
||||
|
||||
public SyncTimelinesAsyncTask(Context context, OnSyncTimelineInterface onSyncTimelineInterface){
|
||||
public SyncTimelinesAsyncTask(Context context, int position, OnSyncTimelineInterface onSyncTimelineInterface){
|
||||
this.contextReference = new WeakReference<>(context);
|
||||
this.listener = onSyncTimelineInterface;
|
||||
this.position = position;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -186,18 +184,19 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
if( manageTimelines.getTagTimeline() == null )
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
for(TagTimeline tag: tagsInDb){
|
||||
if( tag.getId() == manageTimelines.getTagTimeline().getId()){
|
||||
shouldBeRemoved = false;
|
||||
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
if( manageTimelines.getTagTimeline() == null )
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
for(TagTimeline tag: tagsInDb){
|
||||
if( tag.getId() == manageTimelines.getTagTimeline().getId()){
|
||||
shouldBeRemoved = false;
|
||||
}
|
||||
}
|
||||
if( shouldBeRemoved){
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
if( shouldBeRemoved){
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,22 +226,22 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
if( manageTimelines.getRemoteInstance() == null )
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
for(RemoteInstance instance: instancesInDb){
|
||||
if( instance.getId().equals(manageTimelines.getRemoteInstance().getId())){
|
||||
shouldBeRemoved = false;
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
if( manageTimelines.getRemoteInstance() == null )
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
for(RemoteInstance instance: instancesInDb){
|
||||
if( instance.getId().equals(manageTimelines.getRemoteInstance().getId())){
|
||||
shouldBeRemoved = false;
|
||||
}
|
||||
}
|
||||
if( shouldBeRemoved){
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
if( shouldBeRemoved){
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
APIResponse apiResponse = new API(contextReference.get()).getLists();
|
||||
List<fr.gouv.etalab.mastodon.client.Entities.List> lists = apiResponse.getLists();
|
||||
if( lists != null && lists.size() > 0){
|
||||
|
@ -297,7 +296,7 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
|
||||
@Override
|
||||
protected void onPostExecute(Void result) {
|
||||
listener.syncedTimelines(manageTimelines);
|
||||
listener.syncedTimelines(manageTimelines, position);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import android.content.DialogInterface;
|
|||
import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
|
@ -52,6 +53,7 @@ import fr.gouv.etalab.mastodon.R;
|
|||
import fr.gouv.etalab.mastodon.activities.BaseMainActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.SyncTimelinesAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayStatusFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.TabLayoutNotificationsFragment;
|
||||
|
@ -929,9 +931,8 @@ public class ManageTimelines {
|
|||
dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
if( tabLayout.getTabCount() > tl.getPosition())
|
||||
tabLayout.removeTab(tabLayout.getTabAt(tl.getPosition()));
|
||||
new SearchDAO(context, db).remove(tag);
|
||||
new SyncTimelinesAsyncTask(context, tabLayout.getSelectedTabPosition(), ((BaseMainActivity)context) ).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
|
|
|
@ -34,6 +34,7 @@ import android.os.Bundle;
|
|||
import android.os.CountDownTimer;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.PopupMenu;
|
||||
|
@ -145,6 +146,7 @@ import fr.gouv.etalab.mastodon.sqlite.StatusStoredDAO;
|
|||
import fr.gouv.etalab.mastodon.sqlite.TempMuteDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.TimelinesDAO;
|
||||
|
||||
import static fr.gouv.etalab.mastodon.activities.BaseMainActivity.mPageReferenceMap;
|
||||
import static fr.gouv.etalab.mastodon.activities.BaseMainActivity.social;
|
||||
import static fr.gouv.etalab.mastodon.activities.MainActivity.currentLocale;
|
||||
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
|
||||
|
@ -1359,7 +1361,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
List<ManageTimelines> timelines = new TimelinesDAO(context, db).getDisplayedTimelines();
|
||||
for(ManageTimelines tl: timelines) {
|
||||
if( tl.getType() == ManageTimelines.Type.HOME) {
|
||||
DisplayStatusFragment homeFragment = (DisplayStatusFragment) ((MainActivity) context).getSupportFragmentManager().getFragments().get(tl.getPosition());
|
||||
FragmentTransaction fragTransaction = ((MainActivity)context).getSupportFragmentManager().beginTransaction();
|
||||
DisplayStatusFragment homeFragment = (DisplayStatusFragment) mPageReferenceMap.get(tl.getPosition());
|
||||
if (homeFragment != null)
|
||||
homeFragment.fetchMore(status.getId());
|
||||
break;
|
||||
|
|
|
@ -24,5 +24,5 @@ import fr.gouv.etalab.mastodon.client.Entities.ManageTimelines;
|
|||
* Interface when timelines are retrieved
|
||||
*/
|
||||
public interface OnSyncTimelineInterface {
|
||||
void syncedTimelines(List<ManageTimelines> manageTimelines);
|
||||
void syncedTimelines(List<ManageTimelines> manageTimelines, int position);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue