diff --git a/app/build.gradle b/app/build.gradle index bb17f4a9..c390051d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ proguardDictionaries { } dependencies { - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'androidx.appcompat:appcompat:1.6.0' implementation 'com.google.android.material:material:1.7.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/FragmentAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/FragmentAdapter.java index ccf9b433..240159aa 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/FragmentAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/FragmentAdapter.java @@ -9,6 +9,7 @@ import static org.nuclearfog.twidda.ui.fragments.StatusFragment.STATUS_FRAGMENT_ import static org.nuclearfog.twidda.ui.fragments.StatusFragment.STATUS_FRAGMENT_SEARCH; import static org.nuclearfog.twidda.ui.fragments.StatusFragment.STATUS_FRAGMENT_USER; import static org.nuclearfog.twidda.ui.fragments.StatusFragment.STATUS_FRAGMENT_USERLIST; +import static org.nuclearfog.twidda.ui.fragments.TrendFragment.KEY_HASHTAG_SEARCH; import static org.nuclearfog.twidda.ui.fragments.UserFragment.KEY_FRAG_DEL_USER; import static org.nuclearfog.twidda.ui.fragments.UserFragment.KEY_FRAG_USER_ID; import static org.nuclearfog.twidda.ui.fragments.UserFragment.KEY_FRAG_USER_MODE; @@ -147,16 +148,25 @@ public class FragmentAdapter extends FragmentStatePagerAdapter { /** * setup adapter for search for status and user search * - * @param search Search string + * @param search Search string + * @param includeHashtag add hashtag search fragment */ - public void setupSearchPage(String search) { + public void setupSearchPage(String search, boolean includeHashtag) { Bundle paramStatuses = new Bundle(); Bundle paramUsers = new Bundle(); + Bundle paramTrend = new Bundle(); paramStatuses.putString(KEY_STATUS_FRAGMENT_SEARCH, search); paramUsers.putString(KEY_FRAG_USER_SEARCH, search); paramStatuses.putInt(KEY_STATUS_FRAGMENT_MODE, STATUS_FRAGMENT_SEARCH); paramUsers.putInt(KEY_FRAG_USER_MODE, USER_FRAG_SEARCH); - fragments = new ListFragment[2]; + paramTrend.putString(KEY_HASHTAG_SEARCH, search); + if (includeHashtag) { + fragments = new ListFragment[3]; + fragments[2] = new TrendFragment(); + fragments[2].setArguments(paramTrend); + } else { + fragments = new ListFragment[2]; + } fragments[0] = new StatusFragment(); fragments[1] = new UserFragment(); fragments[0].setArguments(paramStatuses); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/Connection.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/Connection.java index cb710b27..602923a8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/Connection.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/Connection.java @@ -238,6 +238,14 @@ public interface Connection { */ List getTrends() throws ConnectionException; + /** + * search hashtags matching search string + * + * @param search text to search hashtags + * @return list of trends (Hashtags) + */ + List searchHashtags(String search) throws ConnectionException; + /** * get available locations for trends * diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java index a69f2d19..2d687815 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java @@ -201,6 +201,7 @@ public class Mastodon implements Connection { List params = new ArrayList<>(); params.add("q=" + StringTools.encode(search)); params.add("limit=" + settings.getListSize()); + params.add("type=accounts"); return getUsers(ENDPOINT_SEARCH_ACCOUNTS, params); } @@ -351,6 +352,7 @@ public class Mastodon implements Connection { public List searchStatuses(String search, long minId, long maxId) throws MastodonException { List params = new ArrayList<>(); params.add("q=" + StringTools.encode(search)); + params.add("limit=" + settings.getListSize()); params.add("type=statuses"); return getStatuses(SEARCH_TIMELINE, params, minId, maxId); } @@ -385,6 +387,30 @@ public class Mastodon implements Connection { } + @Override + public List searchHashtags(String search) throws MastodonException { + try { + List params = new ArrayList<>(); + params.add("q=" + StringTools.encode(search)); + params.add("limit=" + settings.getListSize()); + params.add("type=hashtags"); + Response response = get(SEARCH_TIMELINE, params); + ResponseBody body = response.body(); + if (response.code() == 200 && body != null) { + JSONArray array = new JSONObject(body.string()).getJSONArray("hashtags"); + List result = new ArrayList<>(array.length()); + for (int i = 0; i < array.length(); i++) { + result.add(new MastodonTrend(array.getJSONObject(i), i)); + } + return result; + } + throw new MastodonException(response); + } catch (IOException | JSONException e) { + throw new MastodonException(e); + } + } + + @Override public List getLocations() { return new ArrayList<>(0); // not supported yet diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonTrend.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonTrend.java index fd0522a0..fb3d50d2 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonTrend.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonTrend.java @@ -25,7 +25,7 @@ public class MastodonTrend implements Trend { */ public MastodonTrend(JSONObject json, int pos) { JSONArray history = json.optJSONArray("history"); - name = json.optString("name", ""); + name = '#' + json.optString("name", ""); rank = pos + 1; if (history != null && history.length() > 0) { JSONObject latest = history.optJSONObject(0); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java index f8650a21..16e6a853 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Twitter.java @@ -534,6 +534,12 @@ public class Twitter implements Connection { } + @Override + public List searchHashtags(String search) throws TwitterException { + throw new TwitterException("not implemented!"); + } + + @Override public List getLocations() throws TwitterException { try { diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/async/MessageLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/async/MessageLoader.java index e4848206..8e55fa90 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/async/MessageLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/async/MessageLoader.java @@ -65,10 +65,11 @@ public class MessageLoader extends AsyncTask { @Override protected Messages doInBackground(Void... v) { + Messages messages = null; try { switch (action) { case DB: - Messages messages = db.getMessages(); + messages = db.getMessages(); if (messages.isEmpty()) { messages = connection.getDirectmessages(""); // merge online messages with offline messages @@ -95,8 +96,9 @@ public class MessageLoader extends AsyncTask { } } catch (Exception e) { e.printStackTrace(); + messageId = -1L; // remove ID of the message } - return null; + return messages; } @@ -109,16 +111,17 @@ public class MessageLoader extends AsyncTask { case LOAD: if (messages != null) { fragment.setData(messages); - } else { + } + if (messages == null || exception != null) { fragment.onError(exception, messageId); } break; case DEL: - if (exception == null) { - fragment.removeItem(messageId); - } else { + if (exception != null || messageId != -1L) { fragment.onError(exception, messageId); + } else { + fragment.removeItem(messageId); } break; } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/async/StatusLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/async/StatusLoader.java index ec073828..8e7ed300 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/async/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/async/StatusLoader.java @@ -208,7 +208,7 @@ public class StatusLoader extends AsyncTask> { if (statuses != null) { fragment.setData(statuses, pos); } - if (exception != null) { + if (statuses == null || exception != null) { fragment.onError(exception); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/async/TrendLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/async/TrendLoader.java index ea8f57cb..c38b642b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/async/TrendLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/async/TrendLoader.java @@ -20,7 +20,7 @@ import java.util.List; * @author nuclearfog * @see TrendFragment */ -public class TrendLoader extends AsyncTask> { +public class TrendLoader extends AsyncTask> { private WeakReference weakRef; private Connection connection; @@ -43,10 +43,12 @@ public class TrendLoader extends AsyncTask> { @Override - protected List doInBackground(Void... v) { - List trends; + protected List doInBackground(String... params) { + List trends = null; try { - if (isEmpty) { + if (params.length == 1 && params[0] != null && !params[0].trim().isEmpty()) { + trends = connection.searchHashtags(params[0]); + } else if (isEmpty) { trends = db.getTrends(); if (trends.isEmpty()) { trends = connection.getTrends(); @@ -56,13 +58,12 @@ public class TrendLoader extends AsyncTask> { trends = connection.getTrends(); db.saveTrends(trends); } - return trends; } catch (ConnectionException exception) { this.exception = exception; } catch (Exception e) { e.printStackTrace(); } - return null; + return trends; } @@ -73,7 +74,7 @@ public class TrendLoader extends AsyncTask> { if (trends != null) { fragment.setData(trends); } - if (exception != null) { + if (trends == null || exception != null) { fragment.onError(exception); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/LoginActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/LoginActivity.java index 0bab58ff..de247dc4 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/LoginActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/LoginActivity.java @@ -208,14 +208,14 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener, else { String apiTxt1 = apiKey1.getText().toString(); String apiTxt2 = apiKey2.getText().toString(); - Toast.makeText(this, R.string.info_open_twitter_login, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_open_twitter_login, LENGTH_LONG).show(); loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_REQUEST); loginAsync.execute(apiTxt1, apiTxt2); } } // use system tokens else if (Tokens.USE_DEFAULT_KEYS) { - Toast.makeText(this, R.string.info_open_twitter_login, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_open_twitter_login, LENGTH_LONG).show(); loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_REQUEST); loginAsync.execute(); } @@ -223,9 +223,9 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener, // generate Mastodon login else if (hostSelector.getSelectedItemId() == NetworkAdapter.ID_MASTODON) { if (apiHost.length() > 0 && !Patterns.WEB_URL.matcher(apiHost.getText()).matches()) { - Toast.makeText(this, R.string.error_invalid_url, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.error_invalid_url, LENGTH_LONG).show(); } else { - Toast.makeText(this, R.string.info_open_mastodon_login, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_open_mastodon_login, LENGTH_LONG).show(); loginAsync = new LoginAction(this, LoginAction.LOGIN_MASTODON, LoginAction.MODE_REQUEST); if (apiHost.length() > 0) { String link = apiHost.getText().toString(); @@ -245,7 +245,7 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener, String code = pinInput.getText().toString(); // check if user clicked on PIN button if (loginLink == null) { - Toast.makeText(this, R.string.info_get_link, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_get_link, LENGTH_LONG).show(); } else if (code.isEmpty()) { pinInput.setError(getString(R.string.error_enter_code)); } @@ -259,21 +259,21 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener, else { String apiTxt1 = apiKey1.getText().toString(); String apiTxt2 = apiKey2.getText().toString(); - Toast.makeText(this, R.string.info_login_to_twitter, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_login_to_twitter, LENGTH_LONG).show(); loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_LOGIN); loginAsync.execute(loginLink, code, apiTxt1, apiTxt2); } } // use system tokens else if (Tokens.USE_DEFAULT_KEYS) { - Toast.makeText(this, R.string.info_login_to_twitter, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_login_to_twitter, LENGTH_LONG).show(); loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_LOGIN); loginAsync.execute(loginLink, code); } } // login to mastodon else if (hostSelector.getSelectedItemId() == NetworkAdapter.ID_MASTODON) { - Toast.makeText(this, R.string.info_login_to_mastodon, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_login_to_mastodon, LENGTH_LONG).show(); loginAsync = new LoginAction(this, LoginAction.LOGIN_MASTODON, LoginAction.MODE_LOGIN); loginAsync.execute(loginLink, code); } @@ -358,7 +358,7 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener, try { startActivity(loginIntent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_open_link, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_open_link, LENGTH_SHORT).show(); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java index cef14920..14d55cd1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java @@ -250,7 +250,7 @@ public class MainActivity extends AppCompatActivity implements OnTabSelectedList search.putExtra(KEY_SEARCH_QUERY, s); startActivity(search); } else { - Toast.makeText(this, R.string.error_twitter_search, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_twitter_search, Toast.LENGTH_SHORT).show(); } return false; } @@ -302,7 +302,7 @@ public class MainActivity extends AppCompatActivity implements OnTabSelectedList if (error != null) { ErrorHandler.handleFailure(this, error); } else { - Toast.makeText(this, R.string.error_open_link, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_open_link, Toast.LENGTH_SHORT).show(); } loadingCircle.dismiss(); } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MediaActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MediaActivity.java index 5393cb3c..dcd08fbe 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MediaActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MediaActivity.java @@ -247,7 +247,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Locatio * called when an image was successfully saved to external storage */ public void onImageSaved() { - Toast.makeText(this, R.string.info_image_saved, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_image_saved, LENGTH_SHORT).show(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { // start media scanner to scan for new image MediaScannerConnection.scanFile(this, new String[]{imageName}, null, null); @@ -258,7 +258,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Locatio * called when an error occurs while storing image */ public void onError() { - Toast.makeText(this, R.string.error_image_save, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_image_save, Toast.LENGTH_SHORT).show(); } /** @@ -269,7 +269,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Locatio startLocating(); } else { if (shouldShowRequestPermissionRationale(ACCESS_FINE_LOCATION)) { - Toast.makeText(this, R.string.info_permission_location, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_permission_location, LENGTH_LONG).show(); } requestPermissions(PERMISSION_LOCATION, REQUEST_LOCATION); } @@ -297,7 +297,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Locatio if (requiresPermission) { for (String permission : PERMISSIONS_READ) { if (shouldShowRequestPermissionRationale(permission)) { - Toast.makeText(this, R.string.info_permission_read, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_permission_read, LENGTH_LONG).show(); break; } } @@ -321,7 +321,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Locatio saveImage(); } else { if (shouldShowRequestPermissionRationale(WRITE_EXTERNAL_STORAGE)) - Toast.makeText(this, R.string.info_permission_write, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_permission_write, LENGTH_LONG).show(); requestPermissions(PERMISSION_WRITE, REQUEST_STORE_IMG); } } @@ -371,7 +371,7 @@ public abstract class MediaActivity extends AppCompatActivity implements Locatio try { startActivityForResult(mediaSelect, requestCode); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_no_media_app, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_no_media_app, LENGTH_SHORT).show(); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MessageEditor.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MessageEditor.java index 47ffe191..587e05c5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MessageEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MessageEditor.java @@ -124,7 +124,7 @@ public class MessageEditor extends MediaActivity implements OnClickListener, OnC preview.setVisibility(VISIBLE); media.setVisibility(GONE); } else { - Toast.makeText(this, R.string.error_adding_media, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_adding_media, LENGTH_SHORT).show(); } } } @@ -177,7 +177,7 @@ public class MessageEditor extends MediaActivity implements OnClickListener, OnC * called when direct message is sent */ public void onSuccess() { - Toast.makeText(this, R.string.info_dm_send, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_dm_send, Toast.LENGTH_SHORT).show(); finish(); } @@ -206,10 +206,10 @@ public class MessageEditor extends MediaActivity implements OnClickListener, OnC messageAsync.execute(); loadingCircle.show(); } else { - Toast.makeText(this, R.string.error_media_init, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_media_init, LENGTH_SHORT).show(); } } else { - Toast.makeText(this, R.string.error_dm, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_dm, LENGTH_SHORT).show(); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java index 88d3b1d6..ca8f446e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileActivity.java @@ -478,7 +478,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene try { startActivity(intent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } } @@ -519,7 +519,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene try { startActivity(browserIntent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } } @@ -694,25 +694,25 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene // check if block status changed if (relation.isBlocked() != this.relation.isBlocked()) { if (relation.isBlocked()) { - Toast.makeText(this, R.string.info_user_blocked, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_user_blocked, Toast.LENGTH_SHORT).show(); } else { - Toast.makeText(this, R.string.info_user_unblocked, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_user_unblocked, Toast.LENGTH_SHORT).show(); } } // check if following status changed else if (relation.isFollowing() != this.relation.isFollowing()) { if (relation.isFollowing()) { - Toast.makeText(this, R.string.info_followed, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_followed, Toast.LENGTH_SHORT).show(); } else { - Toast.makeText(this, R.string.info_unfollowed, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_unfollowed, Toast.LENGTH_SHORT).show(); } } // check if mute status changed else if (relation.isMuted() != this.relation.isMuted()) { if (relation.isMuted()) { - Toast.makeText(this, R.string.info_user_muted, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_user_muted, Toast.LENGTH_SHORT).show(); } else { - Toast.makeText(this, R.string.info_user_unmuted, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_user_unmuted, Toast.LENGTH_SHORT).show(); } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileEditor.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileEditor.java index db7501fe..9b4f9e42 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/ProfileEditor.java @@ -205,7 +205,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP if (holder.setImage(this, uri)) { profile_image.setImageURI(uri); } else { - Toast.makeText(this, R.string.error_adding_media, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_adding_media, Toast.LENGTH_SHORT).show(); } } // Add image as banner image @@ -217,7 +217,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP addBannerBtn.setVisibility(INVISIBLE); changeBannerBtn.setVisibility(VISIBLE); } else { - Toast.makeText(this, R.string.error_adding_media, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_adding_media, Toast.LENGTH_SHORT).show(); } } } @@ -276,7 +276,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP public void onSuccess(@NonNull User user) { Intent data = new Intent(); data.putExtra(KEY_UPDATED_PROFILE, user); - Toast.makeText(this, R.string.info_profile_updated, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_profile_updated, Toast.LENGTH_SHORT).show(); setResult(RETURN_PROFILE_CHANGED, data); finish(); } @@ -314,7 +314,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP editorAsync.execute(); loadingCircle.show(); } else { - Toast.makeText(this, R.string.error_media_init, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_media_init, Toast.LENGTH_SHORT).show(); } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java index e3b85a08..2447af85 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java @@ -78,9 +78,12 @@ public class SearchActivity extends AppCompatActivity implements OnTabSelectedLi pager.setAdapter(adapter); pager.setOffscreenPageLimit(2); - search = getIntent().getStringExtra(KEY_SEARCH_QUERY); - adapter.setupSearchPage(search); - AppStyles.setTabIcons(tabLayout, settings, R.array.search_tab_icons); + String search = getIntent().getStringExtra(KEY_SEARCH_QUERY); + if (search != null) { + this.search = search; + adapter.setupSearchPage(search, !search.startsWith("#") && settings.getLogin().getApiType() == Account.API_MASTODON); + AppStyles.setTabIcons(tabLayout, settings, R.array.search_tab_icons); + } AppStyles.setTheme(root); } @@ -146,7 +149,7 @@ public class SearchActivity extends AppCompatActivity implements OnTabSelectedLi search.putExtra(KEY_SEARCH_QUERY, s); startActivity(search); } else { - Toast.makeText(this, R.string.error_twitter_search, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_twitter_search, Toast.LENGTH_SHORT).show(); } return true; } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java index 71a7c63c..3419f04e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java @@ -534,7 +534,7 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen else if (parent.getId() == R.id.spinner_scale) { settings.setScaleIndex(position); AppStyles.setFontStyle(root); - Toast.makeText(this, R.string.info_restart_app_on_change, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_restart_app_on_change, Toast.LENGTH_SHORT).show(); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusActivity.java index 802e11f9..8a5be2ef 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusActivity.java @@ -365,7 +365,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener try { startActivity(intent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } // copy status link to clipboard @@ -373,7 +373,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener if (clip != null) { ClipData linkClip = ClipData.newPlainText("status text", status.getText()); clip.setPrimaryClip(linkClip); - Toast.makeText(this, R.string.info_tweet_text_copied, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_text_copied, LENGTH_SHORT).show(); } } // copy status link to clipboard @@ -381,7 +381,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener if (clip != null) { ClipData linkClip = ClipData.newPlainText("status link", status.getUrl()); clip.setPrimaryClip(linkClip); - Toast.makeText(this, R.string.info_tweet_link_copied, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_link_copied, LENGTH_SHORT).show(); } } // open status metrics page @@ -398,7 +398,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener if (clip != null) { ClipData linkClip = ClipData.newPlainText("status media link", medias[index].getUrl()); clip.setPrimaryClip(linkClip); - Toast.makeText(this, R.string.info_tweet_medialink_copied, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_medialink_copied, LENGTH_SHORT).show(); } } } @@ -485,7 +485,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener } else { statusAsync.execute(status.getId()); } - Toast.makeText(this, R.string.info_loading, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_loading, LENGTH_SHORT).show(); return true; } // favorite this status @@ -496,7 +496,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener statusAsync = new StatusAction(this, StatusAction.FAVORITE); } statusAsync.execute(status.getId()); - Toast.makeText(this, R.string.info_loading, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_loading, LENGTH_SHORT).show(); return true; } // go to original status @@ -519,7 +519,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener if (clip != null && location != null) { ClipData linkClip = ClipData.newPlainText("Status location coordinates", location.getCoordinates()); clip.setPrimaryClip(linkClip); - Toast.makeText(this, R.string.info_tweet_location_copied, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_location_copied, LENGTH_SHORT).show(); } } } @@ -563,7 +563,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener try { startActivity(intent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } else if (type == OnCardClickListener.TYPE_IMAGE) { String imageUrl = card.getImageUrl(); @@ -635,7 +635,7 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener try { startActivity(intent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } } @@ -767,43 +767,43 @@ public class StatusActivity extends AppCompatActivity implements OnClickListener public void OnSuccess(int action) { switch (action) { case StatusAction.REPOST: - Toast.makeText(this, R.string.info_tweet_retweeted, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_retweeted, LENGTH_SHORT).show(); break; case StatusAction.REMOVE_REPOST: - Toast.makeText(this, R.string.info_tweet_unretweeted, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_unretweeted, LENGTH_SHORT).show(); // todo remove old retweet from list fragment break; case StatusAction.FAVORITE: if (settings.likeEnabled()) - Toast.makeText(this, R.string.info_tweet_liked, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_liked, LENGTH_SHORT).show(); else - Toast.makeText(this, R.string.info_tweet_favored, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_favored, LENGTH_SHORT).show(); break; case StatusAction.UNFAVORITE: if (settings.likeEnabled()) - Toast.makeText(this, R.string.info_tweet_unliked, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_unliked, LENGTH_SHORT).show(); else - Toast.makeText(this, R.string.info_tweet_unfavored, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_unfavored, LENGTH_SHORT).show(); break; case StatusAction.HIDE: hidden = true; invalidateOptionsMenu(); - Toast.makeText(this, R.string.info_reply_hidden, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_reply_hidden, LENGTH_SHORT).show(); break; case StatusAction.UNHIDE: hidden = false; invalidateOptionsMenu(); - Toast.makeText(this, R.string.info_reply_unhidden, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_reply_unhidden, LENGTH_SHORT).show(); break; case StatusAction.DELETE: if (status != null) { - Toast.makeText(this, R.string.info_tweet_removed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_removed, LENGTH_SHORT).show(); Intent returnData = new Intent(); if (status.getEmbeddedStatus() != null) returnData.putExtra(INTENT_STATUS_REMOVED_ID, status.getEmbeddedStatus().getId()); diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java index b5787822..e8dca73e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java @@ -160,15 +160,15 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr String statusText = this.statusText.getText().toString(); // check if status is empty if (statusText.trim().isEmpty() && statusUpdate.mediaCount() == 0) { - Toast.makeText(this, R.string.error_empty_tweet, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_empty_tweet, LENGTH_SHORT).show(); } // check if mentions exceed the limit else if (StringTools.countMentions(statusText) > MAX_MENTIONS) { - Toast.makeText(this, R.string.error_mention_exceed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_mention_exceed, LENGTH_SHORT).show(); } // check if GPS location is pending else if (isLocating()) { - Toast.makeText(this, R.string.info_location_pending, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_location_pending, LENGTH_SHORT).show(); } // check if gps locating is not pending else if (uploaderAsync == null || uploaderAsync.getStatus() != RUNNING) { @@ -202,9 +202,9 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr protected void onAttachLocation(@Nullable Location location) { if (location != null) { statusUpdate.setLocation(location); - Toast.makeText(this, R.string.info_gps_attached, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_gps_attached, LENGTH_LONG).show(); } else { - Toast.makeText(this, R.string.error_gps, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.error_gps, LENGTH_LONG).show(); } locationPending.setVisibility(INVISIBLE); locationBtn.setVisibility(VISIBLE); @@ -228,7 +228,7 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr break; case StatusUpdate.MEDIA_ERROR: - Toast.makeText(this, R.string.error_adding_media, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_adding_media, LENGTH_SHORT).show(); break; } if (statusUpdate.mediaLimitReached()) { @@ -282,7 +282,7 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr * called if status was updated successfully */ public void onSuccess() { - Toast.makeText(this, R.string.info_tweet_sent, LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), R.string.info_tweet_sent, LENGTH_LONG).show(); finish(); } @@ -321,7 +321,7 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr // show progress dialog loadingCircle.show(); } else { - Toast.makeText(this, R.string.error_media_init, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_media_init, LENGTH_SHORT).show(); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistActivity.java index 97885db5..674d31d0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistActivity.java @@ -329,13 +329,13 @@ public class UserlistActivity extends AppCompatActivity implements OnTabSelected return false; if (USERNAME_PATTERN.matcher(query).matches()) { if (listManagerAsync == null || listManagerAsync.getStatus() != RUNNING) { - Toast.makeText(this, R.string.info_adding_user_to_list, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_adding_user_to_list, Toast.LENGTH_SHORT).show(); listManagerAsync = new ListManager(this, userList.getId(), ListManager.ADD_USER, query, this); listManagerAsync.execute(); return true; } } else { - Toast.makeText(this, R.string.error_username_format, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_username_format, Toast.LENGTH_SHORT).show(); } return false; } @@ -352,14 +352,14 @@ public class UserlistActivity extends AppCompatActivity implements OnTabSelected if (!name.startsWith("@")) name = '@' + name; String info = getString(R.string.info_user_added_to_list, name); - Toast.makeText(this, info, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), info, Toast.LENGTH_SHORT).show(); invalidateOptionsMenu(); break; case ListManager.DEL_USER: if (user != null) { info = getString(R.string.info_user_removed, user.getScreenname()); - Toast.makeText(this, info, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), info, Toast.LENGTH_SHORT).show(); // remove user from list member page Fragment fragment = adapter.getItem(1); if (fragment instanceof UserFragment) { @@ -405,12 +405,12 @@ public class UserlistActivity extends AppCompatActivity implements OnTabSelected break; case ListAction.FOLLOW: - Toast.makeText(this, R.string.info_list_followed, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_list_followed, Toast.LENGTH_SHORT).show(); invalidateOptionsMenu(); break; case ListAction.UNFOLLOW: - Toast.makeText(this, R.string.info_list_unfollowed, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_list_unfollowed, Toast.LENGTH_SHORT).show(); invalidateOptionsMenu(); break; @@ -418,7 +418,7 @@ public class UserlistActivity extends AppCompatActivity implements OnTabSelected Intent result = new Intent(); result.putExtra(RESULT_REMOVED_LIST_ID, userList.getId()); setResult(RETURN_LIST_REMOVED, result); - Toast.makeText(this, R.string.info_list_removed, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_list_removed, Toast.LENGTH_SHORT).show(); finish(); break; } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistEditor.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistEditor.java index a48194f0..e9e83496 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/UserlistEditor.java @@ -165,8 +165,8 @@ public class UserlistEditor extends AppCompatActivity implements OnClickListener /** * called when a list was created successfully * - * @param result new created list - * @param updated true if an existing list was updated + * @param result new created list + * @param updated true if an existing list was updated */ public void onSuccess(@NonNull UserList result, boolean updated) { if (updated) { @@ -197,7 +197,7 @@ public class UserlistEditor extends AppCompatActivity implements OnClickListener String descrStr = subTitleInput.getText().toString(); boolean isPublic = visibility.isChecked(); if (titleStr.trim().isEmpty()) { - Toast.makeText(this, R.string.error_list_title_empty, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_list_title_empty, Toast.LENGTH_SHORT).show(); } else { UserListUpdate mHolder; if (userList != null) { diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/UsersActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/UsersActivity.java index a2c11e4b..11a43d77 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/UsersActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/UsersActivity.java @@ -235,7 +235,7 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == R.id.menu_exclude_refresh) { if (userExclTask == null || userExclTask.getStatus() != RUNNING) { - Toast.makeText(this, R.string.info_refreshing_exclude_list, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_refreshing_exclude_list, Toast.LENGTH_SHORT).show(); userExclTask = new FilterLoader(this, REFRESH); userExclTask.execute(); } @@ -279,7 +279,7 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis } } } else { - Toast.makeText(this, R.string.error_username_format, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_username_format, Toast.LENGTH_SHORT).show(); } return false; } @@ -296,17 +296,17 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis public void onSuccess(int mode) { switch (mode) { case MUTE_USER: - Toast.makeText(this, R.string.info_user_muted, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_user_muted, Toast.LENGTH_SHORT).show(); invalidateOptionsMenu(); break; case BLOCK_USER: - Toast.makeText(this, R.string.info_user_blocked, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_user_blocked, Toast.LENGTH_SHORT).show(); invalidateOptionsMenu(); break; case REFRESH: - Toast.makeText(this, R.string.info_exclude_list_updated, Toast.LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.info_exclude_list_updated, Toast.LENGTH_SHORT).show(); break; } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/VideoViewer.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/VideoViewer.java index 19bfac1d..6ba6d80e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/VideoViewer.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/VideoViewer.java @@ -228,7 +228,7 @@ public class VideoViewer extends MediaActivity implements OnSeekBarChangeListene try { startActivity(intent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } } @@ -350,7 +350,7 @@ public class VideoViewer extends MediaActivity implements OnSeekBarChangeListene if (link.getScheme().startsWith("http")) { confirmDialog.show(ConfirmDialog.VIDEO_ERROR); } else { - Toast.makeText(this, R.string.error_cant_load_video, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_cant_load_video, LENGTH_SHORT).show(); finish(); } return true; @@ -398,7 +398,7 @@ public class VideoViewer extends MediaActivity implements OnSeekBarChangeListene try { startActivity(intent); } catch (ActivityNotFoundException err) { - Toast.makeText(this, R.string.error_connection_failed, LENGTH_SHORT).show(); + Toast.makeText(getApplicationContext(), R.string.error_connection_failed, LENGTH_SHORT).show(); } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/fragments/StatusFragment.java b/app/src/main/java/org/nuclearfog/twidda/ui/fragments/StatusFragment.java index da6f4d71..3589f237 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/fragments/StatusFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/fragments/StatusFragment.java @@ -219,7 +219,7 @@ public class StatusFragment extends ListFragment implements StatusSelectListener /** * called from {@link StatusLoader} if an error occurs */ - public void onError(ConnectionException error) { + public void onError(@Nullable ConnectionException error) { ErrorHandler.handleFailure(requireContext(), error); adapter.disableLoading(); setRefresh(false); diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/fragments/TrendFragment.java b/app/src/main/java/org/nuclearfog/twidda/ui/fragments/TrendFragment.java index 79971aeb..27ad5eb4 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/fragments/TrendFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/fragments/TrendFragment.java @@ -27,15 +27,26 @@ import java.util.List; */ public class TrendFragment extends ListFragment implements TrendClickListener { + /** + * additional bundle key to set search string for hashtags + */ + public static final String KEY_HASHTAG_SEARCH = "trend_search_hashtags"; + private TrendLoader trendTask; private TrendAdapter adapter; + private String search = ""; + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); adapter = new TrendAdapter(settings, this); setAdapter(adapter); + Bundle args = getArguments(); + if (args != null) { + search = args.getString(KEY_HASHTAG_SEARCH, ""); + } } @@ -106,7 +117,7 @@ public class TrendFragment extends ListFragment implements TrendClickListener { /** * called from {@link TrendLoader} if an error occurs */ - public void onError(ConnectionException error) { + public void onError(@Nullable ConnectionException error) { ErrorHandler.handleFailure(requireContext(), error); setRefresh(false); } @@ -116,6 +127,6 @@ public class TrendFragment extends ListFragment implements TrendClickListener { */ private void load() { trendTask = new TrendLoader(this); - trendTask.execute(); + trendTask.execute(search); } } \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index f8ef14b0..75a9f6c6 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -18,6 +18,7 @@ @drawable/search @drawable/user + @drawable/hash