Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Taskerplugin #431

Merged
merged 8 commits into from
Oct 24, 2022
Prev Previous commit
Next Next commit
Updated some strings and don't sort playlist by date when playing it …
…from the Tasker action since that will follow the order selected by the user in the app itself
  • Loading branch information
joaomgcd committed Oct 20, 2022
commit 52ccfab2983e1a4497e66228cef0447b3e953043
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
android:name=".playplaylist.config.ActivityConfigPlayPlaylist"
android:exported="true"
android:icon="@mipmap/ic_launcher"
android:label="Pocket Casts Play Playlist">
android:label="Pocket Casts Play Filter">
<intent-filter>
<action android:name="com.twofortyfouram.locale.intent.action.EDIT_SETTING" />
</intent-filter>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package au.com.shiftyjelly.pocketcasts.taskerplugin.playplaylist

import au.com.shiftyjelly.pocketcasts.taskerplugin.R
import com.joaomgcd.taskerpluginlibrary.config.TaskerPluginConfig
import com.joaomgcd.taskerpluginlibrary.config.TaskerPluginConfigHelperNoOutput
import com.joaomgcd.taskerpluginlibrary.input.TaskerInput

class ActionHelperPlayPlaylist(config: TaskerPluginConfig<InputPlayPlaylist>) : TaskerPluginConfigHelperNoOutput<InputPlayPlaylist, ActionRunnerPlayPlaylist>(config) {
override val runnerClass: Class<ActionRunnerPlayPlaylist> get() = ActionRunnerPlayPlaylist::class.java
override fun addToStringBlurb(input: TaskerInput<InputPlayPlaylist>, blurbBuilder: StringBuilder) {
blurbBuilder.append("Playlist: ${input.regular.title}")
blurbBuilder.append("${context.getString(au.com.shiftyjelly.pocketcasts.localization.R.string.filters_filter_name)}: ${input.regular.title}")
}

override val addDefaultStringBlurb: Boolean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package au.com.shiftyjelly.pocketcasts.taskerplugin.playplaylist

import android.content.Context
import au.com.shiftyjelly.pocketcasts.taskerplugin.R
import au.com.shiftyjelly.pocketcasts.taskerplugin.hilt.episodeManager
import au.com.shiftyjelly.pocketcasts.taskerplugin.hilt.playbackManager
import au.com.shiftyjelly.pocketcasts.taskerplugin.hilt.playlistManager
Expand All @@ -10,20 +11,24 @@ import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResult
import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResultError
import com.joaomgcd.taskerpluginlibrary.runner.TaskerPluginResultSucess

private const val ERROR_NO_TITLE_PROVIDED = 1
private const val ERROR_PLAYLIST_NOT_FOUND = 2
private const val ERROR_PLAYLIST_NO_EPISODES = 3

class ActionRunnerPlayPlaylist : TaskerPluginRunnerActionNoOutput<InputPlayPlaylist>() {

override fun run(context: Context, input: TaskerInput<InputPlayPlaylist>): TaskerPluginResult<Unit> {
val title = input.regular.title ?: return TaskerPluginResultError(1, "Must provide title")
val title = input.regular.title ?: return TaskerPluginResultError(ERROR_NO_TITLE_PROVIDED, context.getString(au.com.shiftyjelly.pocketcasts.localization.R.string.must_provide_filter_name))
val playbackManager = context.playbackManager
val playlistManager = context.playlistManager
val episodeManager = context.episodeManager

playbackManager.upNextQueue.removeAll()

val playlist = playlistManager.findFirstByTitle(title) ?: return TaskerPluginResultError(2, "Playlist $title not found")
val playlist = playlistManager.findFirstByTitle(title) ?: return TaskerPluginResultError(ERROR_PLAYLIST_NOT_FOUND, context.getString(au.com.shiftyjelly.pocketcasts.localization.R.string.filter_x_not_found, title))

val episodes = playlistManager.findEpisodes(playlist, episodeManager, playbackManager).sortedByDescending { it.publishedDate }
if (episodes.isEmpty()) return TaskerPluginResultError(3, "No episodes in playlist $title")
val episodes = playlistManager.findEpisodes(playlist, episodeManager, playbackManager)
if (episodes.isEmpty()) return TaskerPluginResultError(ERROR_PLAYLIST_NO_EPISODES, context.getString(au.com.shiftyjelly.pocketcasts.localization.R.string.no_episodes_in_filter_x, title))

playbackManager.playEpisodes(episodes)
return TaskerPluginResultSucess()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,11 @@
package au.com.shiftyjelly.pocketcasts.taskerplugin.playplaylist.activity

import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.Button
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.runtime.rxjava2.subscribeAsState
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
Expand All @@ -38,22 +24,22 @@ fun ComposableConfigPlayPlaylist(viewModel: ViewModelConfigPlayPlaylist, onFinis
Box(modifier = Modifier.fillMaxHeight(1f)) {
Column {
Row {
TextField(value = text, label = { Text(text = "Playlist Name") }, onValueChange = {
TextField(value = text, label = { Text(text = stringResource(id = au.com.shiftyjelly.pocketcasts.localization.R.string.filters_filter_name)) }, onValueChange = {
viewModel.title = it
}, modifier = Modifier.weight(1f), trailingIcon = {
IconButton(onClick = { isSearching = true }) {
Icon(
painter = painterResource(R.drawable.ic_search),
contentDescription = stringResource(au.com.shiftyjelly.pocketcasts.localization.R.string.search),
tint = MaterialTheme.theme.colors.primaryIcon01,
modifier = Modifier.padding(end = 16.dp, start = 16.dp)
)
}
})
IconButton(onClick = { isSearching = true }) {
Icon(
painter = painterResource(R.drawable.ic_search),
contentDescription = stringResource(au.com.shiftyjelly.pocketcasts.localization.R.string.search),
tint = MaterialTheme.theme.colors.primaryIcon01,
modifier = Modifier.padding(end = 16.dp, start = 16.dp)
)
}
})
}
}
Button(onClick = onFinish, modifier = Modifier.align(Alignment.BottomEnd)) {
Text("Ok")
Text(stringResource(au.com.shiftyjelly.pocketcasts.localization.R.string.ok))
}
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1384,4 +1384,9 @@
<string name="end_of_year_launch_modal_primary_button_title">View my 2022</string>
<string name="end_of_year_launch_modal_secondary_button_title">Not Now</string>

<!-- Tasker Plugin-->

<string name="must_provide_filter_name">Must provide filter name</string>
<string name="filter_x_not_found">Filter %1$s not found</string>
<string name="no_episodes_in_filter_x">No episodes in Filter %1$s</string>
</resources>