Skip to content

Commit 0c7a91f

Browse files
authored
Merge pull request #11067 from snaik20/fix_rss_button_visibility
Fix RSS button visibility
2 parents a2d93b3 + 7204407 commit 0c7a91f

1 file changed

Lines changed: 68 additions & 63 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java

Lines changed: 68 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import androidx.annotation.Nullable;
2323
import androidx.core.content.ContextCompat;
2424
import androidx.core.graphics.ColorUtils;
25+
import androidx.core.view.MenuProvider;
2526
import androidx.preference.PreferenceManager;
2627

2728
import com.google.android.material.snackbar.Snackbar;
@@ -99,6 +100,7 @@ public class ChannelFragment extends BaseStateFragment<ChannelInfo>
99100
private MenuItem menuRssButton;
100101
private MenuItem menuNotifyButton;
101102
private SubscriptionEntity channelSubscription;
103+
private MenuProvider menuProvider;
102104

103105
public static ChannelFragment getInstance(final int serviceId, final String url,
104106
final String name) {
@@ -121,7 +123,62 @@ private void setInitialData(final int sid, final String u, final String title) {
121123
@Override
122124
public void onCreate(final Bundle savedInstanceState) {
123125
super.onCreate(savedInstanceState);
124-
setHasOptionsMenu(true);
126+
menuProvider = new MenuProvider() {
127+
@Override
128+
public void onCreateMenu(@NonNull final Menu menu,
129+
@NonNull final MenuInflater inflater) {
130+
inflater.inflate(R.menu.menu_channel, menu);
131+
132+
if (DEBUG) {
133+
Log.d(TAG, "onCreateOptionsMenu() called with: "
134+
+ "menu = [" + menu + "], inflater = [" + inflater + "]");
135+
}
136+
137+
}
138+
139+
@Override
140+
public void onPrepareMenu(@NonNull final Menu menu) {
141+
menuRssButton = menu.findItem(R.id.menu_item_rss);
142+
menuNotifyButton = menu.findItem(R.id.menu_item_notify);
143+
updateRssButton();
144+
updateNotifyButton(channelSubscription);
145+
}
146+
147+
@Override
148+
public boolean onMenuItemSelected(@NonNull final MenuItem item) {
149+
switch (item.getItemId()) {
150+
case R.id.menu_item_notify:
151+
final boolean value = !item.isChecked();
152+
item.setEnabled(false);
153+
setNotify(value);
154+
break;
155+
case R.id.action_settings:
156+
NavigationHelper.openSettings(requireContext());
157+
break;
158+
case R.id.menu_item_rss:
159+
if (currentInfo != null) {
160+
ShareUtils.openUrlInApp(requireContext(), currentInfo.getFeedUrl());
161+
}
162+
break;
163+
case R.id.menu_item_openInBrowser:
164+
if (currentInfo != null) {
165+
ShareUtils.openUrlInBrowser(requireContext(),
166+
currentInfo.getOriginalUrl());
167+
}
168+
break;
169+
case R.id.menu_item_share:
170+
if (currentInfo != null) {
171+
ShareUtils.shareText(requireContext(), name,
172+
currentInfo.getOriginalUrl(), currentInfo.getAvatars());
173+
}
174+
break;
175+
default:
176+
return false;
177+
}
178+
return true;
179+
}
180+
};
181+
activity.addMenuProvider(menuProvider);
125182
}
126183

127184
@Override
@@ -183,67 +240,10 @@ public void onDestroy() {
183240
}
184241
disposables.clear();
185242
binding = null;
243+
activity.removeMenuProvider(menuProvider);
244+
menuProvider = null;
186245
}
187246

188-
189-
/*//////////////////////////////////////////////////////////////////////////
190-
// Menu
191-
//////////////////////////////////////////////////////////////////////////*/
192-
193-
@Override
194-
public void onCreateOptionsMenu(@NonNull final Menu menu,
195-
@NonNull final MenuInflater inflater) {
196-
super.onCreateOptionsMenu(menu, inflater);
197-
inflater.inflate(R.menu.menu_channel, menu);
198-
199-
if (DEBUG) {
200-
Log.d(TAG, "onCreateOptionsMenu() called with: "
201-
+ "menu = [" + menu + "], inflater = [" + inflater + "]");
202-
}
203-
}
204-
205-
@Override
206-
public void onPrepareOptionsMenu(@NonNull final Menu menu) {
207-
super.onPrepareOptionsMenu(menu);
208-
menuRssButton = menu.findItem(R.id.menu_item_rss);
209-
menuNotifyButton = menu.findItem(R.id.menu_item_notify);
210-
updateNotifyButton(channelSubscription);
211-
}
212-
213-
@Override
214-
public boolean onOptionsItemSelected(@NonNull final MenuItem item) {
215-
switch (item.getItemId()) {
216-
case R.id.menu_item_notify:
217-
final boolean value = !item.isChecked();
218-
item.setEnabled(false);
219-
setNotify(value);
220-
break;
221-
case R.id.action_settings:
222-
NavigationHelper.openSettings(requireContext());
223-
break;
224-
case R.id.menu_item_rss:
225-
if (currentInfo != null) {
226-
ShareUtils.openUrlInApp(requireContext(), currentInfo.getFeedUrl());
227-
}
228-
break;
229-
case R.id.menu_item_openInBrowser:
230-
if (currentInfo != null) {
231-
ShareUtils.openUrlInBrowser(requireContext(), currentInfo.getOriginalUrl());
232-
}
233-
break;
234-
case R.id.menu_item_share:
235-
if (currentInfo != null) {
236-
ShareUtils.shareText(requireContext(), name, currentInfo.getOriginalUrl(),
237-
currentInfo.getAvatars());
238-
}
239-
break;
240-
default:
241-
return super.onOptionsItemSelected(item);
242-
}
243-
return true;
244-
}
245-
246-
247247
/*//////////////////////////////////////////////////////////////////////////
248248
// Channel Subscription
249249
//////////////////////////////////////////////////////////////////////////*/
@@ -408,6 +408,13 @@ private void updateSubscribeButton(final boolean isSubscribed) {
408408
animate(binding.channelSubscribeButton, true, 100, AnimationType.LIGHT_SCALE_AND_ALPHA);
409409
}
410410

411+
private void updateRssButton() {
412+
if (menuRssButton == null || currentInfo == null) {
413+
return;
414+
}
415+
menuRssButton.setVisible(!TextUtils.isEmpty(currentInfo.getFeedUrl()));
416+
}
417+
411418
private void updateNotifyButton(@Nullable final SubscriptionEntity subscription) {
412419
if (menuNotifyButton == null) {
413420
return;
@@ -610,9 +617,7 @@ public void handleResult(@NonNull final ChannelInfo result) {
610617
binding.subChannelAvatarView.setVisibility(View.VISIBLE);
611618
}
612619

613-
if (menuRssButton != null) {
614-
menuRssButton.setVisible(!TextUtils.isEmpty(result.getFeedUrl()));
615-
}
620+
updateRssButton();
616621

617622
channelContentNotSupported = false;
618623
for (final Throwable throwable : result.getErrors()) {

0 commit comments

Comments
 (0)