mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +00:00 
			
		
		
		
	Add a few comments and rename a few methods
This commit is contained in:
		| @@ -259,7 +259,7 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> | |||||||
|                 .map(List::isEmpty) |                 .map(List::isEmpty) | ||||||
|                 .distinctUntilChanged() |                 .distinctUntilChanged() | ||||||
|                 .skip(1) // channel has just been opened |                 .skip(1) // channel has just been opened | ||||||
|                 .filter(x -> NotificationHelper.isNewStreamsNotificationsEnabled(requireContext())) |                 .filter(x -> NotificationHelper.areNewStreamsNotificationsEnabled(requireContext())) | ||||||
|                 .observeOn(AndroidSchedulers.mainThread()) |                 .observeOn(AndroidSchedulers.mainThread()) | ||||||
|                 .subscribe(isEmpty -> { |                 .subscribe(isEmpty -> { | ||||||
|                     if (!isEmpty) { |                     if (!isEmpty) { | ||||||
| @@ -402,7 +402,7 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> | |||||||
|         } |         } | ||||||
|         if (subscription != null) { |         if (subscription != null) { | ||||||
|             menuNotifyButton.setEnabled( |             menuNotifyButton.setEnabled( | ||||||
|                     NotificationHelper.isNewStreamsNotificationsEnabled(requireContext()) |                     NotificationHelper.areNewStreamsNotificationsEnabled(requireContext()) | ||||||
|             ); |             ); | ||||||
|             menuNotifyButton.setChecked( |             menuNotifyButton.setChecked( | ||||||
|                     subscription.getNotificationMode() == NotificationMode.ENABLED |                     subscription.getNotificationMode() == NotificationMode.ENABLED | ||||||
| @@ -423,6 +423,9 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> | |||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Show a snackbar with the option to enable notifications on new streams for this channel. | ||||||
|  |      */ | ||||||
|     private void showNotifySnackbar() { |     private void showNotifySnackbar() { | ||||||
|         Snackbar.make(itemsList, R.string.you_successfully_subscribed, Snackbar.LENGTH_LONG) |         Snackbar.make(itemsList, R.string.you_successfully_subscribed, Snackbar.LENGTH_LONG) | ||||||
|                 .setAction(R.string.get_notified, v -> setNotify(true)) |                 .setAction(R.string.get_notified, v -> setNotify(true)) | ||||||
|   | |||||||
| @@ -21,13 +21,20 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItem | |||||||
| import org.schabi.newpipe.local.feed.service.FeedUpdateInfo | import org.schabi.newpipe.local.feed.service.FeedUpdateInfo | ||||||
| import org.schabi.newpipe.util.NavigationHelper | import org.schabi.newpipe.util.NavigationHelper | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Helper for everything related to show notifications about new streams to the user. | ||||||
|  |  */ | ||||||
| class NotificationHelper(val context: Context) { | class NotificationHelper(val context: Context) { | ||||||
|  |  | ||||||
|     private val manager = context.getSystemService( |     private val manager = context.getSystemService( | ||||||
|         Context.NOTIFICATION_SERVICE |         Context.NOTIFICATION_SERVICE | ||||||
|     ) as NotificationManager |     ) as NotificationManager | ||||||
|  |  | ||||||
|     fun notify(data: FeedUpdateInfo): Completable { |     /** | ||||||
|  |      * Show a notification about new streams from a single channel. | ||||||
|  |      * Opening the notification will open the corresponding channel page. | ||||||
|  |      */ | ||||||
|  |     fun displayNewStreamsNotification(data: FeedUpdateInfo): Completable { | ||||||
|         val newStreams: List<StreamInfoItem> = data.newStreams |         val newStreams: List<StreamInfoItem> = data.newStreams | ||||||
|         val summary = context.resources.getQuantityString( |         val summary = context.resources.getQuantityString( | ||||||
|             R.plurals.new_streams, newStreams.size, newStreams.size |             R.plurals.new_streams, newStreams.size, newStreams.size | ||||||
| @@ -69,11 +76,14 @@ class NotificationHelper(val context: Context) { | |||||||
|         style.setSummaryText(summary) |         style.setSummaryText(summary) | ||||||
|         style.setBigContentTitle(data.name) |         style.setBigContentTitle(data.name) | ||||||
|         builder.setStyle(style) |         builder.setStyle(style) | ||||||
|  |         // open the channel page when clicking on the notification | ||||||
|         builder.setContentIntent( |         builder.setContentIntent( | ||||||
|             PendingIntent.getActivity( |             PendingIntent.getActivity( | ||||||
|                 context, |                 context, | ||||||
|                 data.pseudoId, |                 data.pseudoId, | ||||||
|                 NavigationHelper.getChannelIntent(context, data.listInfo.serviceId, data.listInfo.url) |                 NavigationHelper.getChannelIntent( | ||||||
|  |                     context, data.listInfo.serviceId, data.listInfo.url | ||||||
|  |                 ) | ||||||
|                     .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), |                     .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), | ||||||
|                 0 |                 0 | ||||||
|             ) |             ) | ||||||
| @@ -110,7 +120,7 @@ class NotificationHelper(val context: Context) { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         @JvmStatic |         @JvmStatic | ||||||
|         fun isNewStreamsNotificationsEnabled(context: Context): Boolean { |         fun areNewStreamsNotificationsEnabled(context: Context): Boolean { | ||||||
|             return ( |             return ( | ||||||
|                 PreferenceManager.getDefaultSharedPreferences(context) |                 PreferenceManager.getDefaultSharedPreferences(context) | ||||||
|                     .getBoolean(context.getString(R.string.enable_streams_notifications), false) && |                     .getBoolean(context.getString(R.string.enable_streams_notifications), false) && | ||||||
|   | |||||||
| @@ -21,6 +21,10 @@ import org.schabi.newpipe.local.feed.service.FeedLoadManager | |||||||
| import org.schabi.newpipe.local.feed.service.FeedLoadService | import org.schabi.newpipe.local.feed.service.FeedLoadService | ||||||
| import java.util.concurrent.TimeUnit | import java.util.concurrent.TimeUnit | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Worker which checks for new streams of subscribed channels | ||||||
|  |  * in intervals which can be set by the user in the settings. | ||||||
|  |  */ | ||||||
| class NotificationWorker( | class NotificationWorker( | ||||||
|     appContext: Context, |     appContext: Context, | ||||||
|     workerParams: WorkerParameters, |     workerParams: WorkerParameters, | ||||||
| @@ -43,7 +47,7 @@ class NotificationWorker( | |||||||
|             } |             } | ||||||
|             .doOnSubscribe { setForegroundAsync(createForegroundInfo()) } |             .doOnSubscribe { setForegroundAsync(createForegroundInfo()) } | ||||||
|             .flatMapObservable { Observable.fromIterable(it) } |             .flatMapObservable { Observable.fromIterable(it) } | ||||||
|             .flatMapCompletable { x -> notificationHelper.notify(x) } |             .flatMapCompletable { x -> notificationHelper.displayNewStreamsNotification(x) } | ||||||
|             .toSingleDefault(Result.success()) |             .toSingleDefault(Result.success()) | ||||||
|             .onErrorReturnItem(Result.failure()) |             .onErrorReturnItem(Result.failure()) | ||||||
|     } else Single.just(Result.success()) |     } else Single.just(Result.success()) | ||||||
|   | |||||||
| @@ -5,6 +5,10 @@ import androidx.preference.PreferenceManager | |||||||
| import org.schabi.newpipe.R | import org.schabi.newpipe.R | ||||||
| import java.util.concurrent.TimeUnit | import java.util.concurrent.TimeUnit | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Information for the Scheduler which checks for new streams. | ||||||
|  |  * See [NotificationWorker] | ||||||
|  |  */ | ||||||
| data class ScheduleOptions( | data class ScheduleOptions( | ||||||
|     val interval: Long, |     val interval: Long, | ||||||
|     val isRequireNonMeteredNetwork: Boolean |     val isRequireNonMeteredNetwork: Boolean | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 TobiGr
					TobiGr