Skip to content

Commit

Permalink
fix: Voice artists not showing media
Browse files Browse the repository at this point in the history
  • Loading branch information
aayush2622 committed Apr 6, 2024
1 parent 79337b5 commit e5cb7c7
Show file tree
Hide file tree
Showing 9 changed files with 131 additions and 119 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/beta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,11 @@ jobs:
#Telegram
curl -F "chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }}" \
-F "document=@app/build/outputs/apk/google/alpha/app-google-armeabi-v7a-alpha.apk" \
-F "caption=Alpha-Build: ${VERSION}: ${commit_messages}" \
https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendDocument
curl -F "chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }}" \
-F "document=@app/build/outputs/apk/google/alpha/app-google-armeabi-v7a-alpha.apk" \
https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendDocument
curl -F "chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }}" \
-F "document=@app/build/outputs/apk/google/alpha/app-google-arm64-v8a-alpha.apk" \
https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendDocument
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1421,47 +1421,6 @@ Page(page:$page,perPage:50) {
}
}
}
}
}""".replace("\n", " ").replace(""" """, "")

var hasNextPage = true
val yearMedia = mutableMapOf<String, ArrayList<Media>>()
var page = 0

while (hasNextPage) {
page++
hasNextPage = executeQuery<Query.Author>(
query(page),
force = true
)?.data?.author?.staffMedia?.let {
it.edges?.forEach { i ->
i.node?.apply {
val status = status.toString()
val year = startDate?.year?.toString() ?: "TBA"
val title = if (status != "CANCELLED") year else status
if (!yearMedia.containsKey(title))
yearMedia[title] = arrayListOf()
val media = Media(this)
media.relation = i.staffRole
yearMedia[title]?.add(media)
}
}
it.pageInfo?.hasNextPage == true
} ?: false
}

if (yearMedia.contains("CANCELLED")) {
val a = yearMedia["CANCELLED"]!!
yearMedia.remove("CANCELLED")
yearMedia["CANCELLED"] = a
}
author.yearMedia = yearMedia
return author
}
suspend fun getVoiceActorsDetails(author: Author): Author {
fun query(page: Int = 0) = """ {
Staff(id:${author.id}) {
id
characters(page: $page,sort:FAVOURITES_DESC) {
pageInfo{
hasNextPage
Expand All @@ -1480,28 +1439,48 @@ Page(page:$page,perPage:50) {
large
medium
}
}
}
}
}""".replace("\n", " ").replace(""" """, "")

var hasNextPage = true
val yearMedia = mutableMapOf<String, ArrayList<Media>>()
var page = 0
val characters = arrayListOf<Character>()
while (hasNextPage) {
page++
hasNextPage = executeQuery<Query.Author>(
query(page),
force = true
)?.data?.author?.characters?.let {
it.nodes?.forEach { i ->
characters.add(Character(i.id, i.name?.userPreferred, i.image?.large, i.image?.medium, "", false))
val query = executeQuery<Query.Author>(query(page), force = true
)?.data?.author
hasNextPage = query?.staffMedia?.let {
it.edges?.forEach { i ->
i.node?.apply {
val status = status.toString()
val year = startDate?.year?.toString() ?: "TBA"
val title = if (status != "CANCELLED") year else status
if (!yearMedia.containsKey(title))
yearMedia[title] = arrayListOf()
val media = Media(this)
media.relation = i.staffRole
yearMedia[title]?.add(media)
}
}
it.pageInfo?.hasNextPage == true
} ?: false
query?.characters?.let {
it.nodes?.forEach { i ->
characters.add(Character(i.id, i.name?.userPreferred, i.image?.large, i.image?.medium, "", false))
}
}
}

if (yearMedia.contains("CANCELLED")) {
val a = yearMedia["CANCELLED"]!!
yearMedia.remove("CANCELLED")
yearMedia["CANCELLED"] = a
}
author.character = characters
author.yearMedia = yearMedia
return author
}
suspend fun toggleFollow(id: Int): Query.ToggleFollow? {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ class Query {
@SerialName("volumesRead") var volumesRead: Int,
): java.io.Serializable

@Serializable
@Serializable
data class UserFavourites(
@SerialName("anime")
val anime: UserMediaFavouritesCollection,
Expand Down
88 changes: 41 additions & 47 deletions app/src/main/java/ani/dantotsu/media/AuthorActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import ani.dantotsu.EmptyAdapter
import ani.dantotsu.R
import ani.dantotsu.Refresh
Expand Down Expand Up @@ -55,58 +56,51 @@ class AuthorActivity : AppCompatActivity() {
binding.studioClose.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
isVoiceArtist = intent.getBooleanExtra("isVoiceArtist", false)
if (isVoiceArtist) {
model.getVoiceActor().observe(this) {
if (it != null) {
author = it
loaded = true
binding.studioProgressBar.visibility = View.GONE
binding.studioRecycler.visibility = View.VISIBLE
binding.studioRecycler.adapter = CharacterAdapter(author!!.character ?: arrayListOf())
binding.studioRecycler.layoutManager = GridLayoutManager(
this,
(screenWidth / 120f).toInt()
)
model.getAuthor().observe(this) {
if (it != null) {
author = it
loaded = true
binding.studioProgressBar.visibility = View.GONE
binding.studioRecycler.visibility = View.VISIBLE
if (author!!.yearMedia.isNullOrEmpty()) {
binding.studioRecycler.visibility = View.GONE
}
}
}else{
model.getAuthor().observe(this) {
if (it != null) {
author = it
loaded = true
binding.studioProgressBar.visibility = View.GONE
binding.studioRecycler.visibility = View.VISIBLE

val titlePosition = arrayListOf<Int>()
val concatAdapter = ConcatAdapter()
val map = author!!.yearMedia ?: return@observe
val keys = map.keys.toTypedArray()
var pos = 0
val titlePosition = arrayListOf<Int>()
val concatAdapter = ConcatAdapter()
val map = author!!.yearMedia ?: return@observe
val keys = map.keys.toTypedArray()
var pos = 0

val gridSize = (screenWidth / 124f).toInt()
val gridLayoutManager = GridLayoutManager(this, gridSize)
gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return when (position in titlePosition) {
true -> gridSize
else -> 1
}
val gridSize = (screenWidth / 124f).toInt()
val gridLayoutManager = GridLayoutManager(this, gridSize)
gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return when (position in titlePosition) {
true -> gridSize
else -> 1
}
}
for (i in keys.indices) {
val medias = map[keys[i]]!!
val empty = if (medias.size >= 4) medias.size % 4 else 4 - medias.size
titlePosition.add(pos)
pos += (empty + medias.size + 1)
}
for (i in keys.indices) {
val medias = map[keys[i]]!!
val empty = if (medias.size >= 4) medias.size % 4 else 4 - medias.size
titlePosition.add(pos)
pos += (empty + medias.size + 1)

concatAdapter.addAdapter(TitleAdapter("${keys[i]} (${medias.size})"))
concatAdapter.addAdapter(MediaAdaptor(0, medias, this, true))
concatAdapter.addAdapter(EmptyAdapter(empty))
}
concatAdapter.addAdapter(TitleAdapter("${keys[i]} (${medias.size})"))
concatAdapter.addAdapter(MediaAdaptor(0, medias, this, true))
concatAdapter.addAdapter(EmptyAdapter(empty))
}
binding.studioRecycler.adapter = concatAdapter
binding.studioRecycler.layoutManager = gridLayoutManager

binding.studioRecycler.adapter = concatAdapter
binding.studioRecycler.layoutManager = gridLayoutManager
binding.charactersRecycler.visibility = View.VISIBLE
binding.charactersText.visibility = View.VISIBLE
binding.charactersRecycler.adapter = CharacterAdapter(author!!.character ?: arrayListOf())
binding.charactersRecycler.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
if (author!!.character.isNullOrEmpty()) {
binding.charactersRecycler.visibility = View.GONE
binding.charactersText.visibility = View.GONE
}
}
}
Expand All @@ -115,7 +109,7 @@ class AuthorActivity : AppCompatActivity() {
if (it) {
scope.launch {
if (author != null)
withContext(Dispatchers.IO) { if (isVoiceArtist) model.loadVoiceActor(author!!) else model.loadAuthor(author!!)}
withContext(Dispatchers.IO) { model.loadAuthor(author!!)}
live.postValue(false)
}
}
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/java/ani/dantotsu/media/AuthorAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import java.io.Serializable

class AuthorAdapter(
private val authorList: ArrayList<Author>,
private val isVA: Boolean = false,
) : RecyclerView.Adapter<AuthorAdapter.AuthorViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AuthorViewHolder {
val binding =
Expand Down Expand Up @@ -44,7 +43,7 @@ class AuthorAdapter(
Intent(
itemView.context,
AuthorActivity::class.java
).putExtra("author", author as Serializable).putExtra("isVoiceArtist", isVA),
).putExtra("author", author as Serializable),
ActivityOptionsCompat.makeSceneTransitionAnimation(
itemView.context as Activity,
Pair.create(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class CharacterDetailsAdapter(private val character: Character, private val acti
val markWon = Markwon.builder(activity).usePlugin(SoftBreakAddsNewLinePlugin.create())
.usePlugin(SpoilerPlugin()).build()
markWon.setMarkdown(binding.characterDesc, desc.replace("~!", "||").replace("!~", "||"))
binding.voiceActorRecycler.adapter = AuthorAdapter(character.voiceActor ?: arrayListOf(), true)
binding.voiceActorRecycler.adapter = AuthorAdapter(character.voiceActor ?: arrayListOf())
binding.voiceActorRecycler.layoutManager = LinearLayoutManager(
activity, LinearLayoutManager.HORIZONTAL, false
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,7 @@ class OtherDetailsViewModel : ViewModel() {
suspend fun loadAuthor(m: Author) {
if (author.value == null) author.postValue(Anilist.query.getAuthorDetails(m))
}
private val voiceActor: MutableLiveData<Author> = MutableLiveData(null)
fun getVoiceActor(): LiveData<Author> = voiceActor
suspend fun loadVoiceActor(m: Author) {
if (voiceActor.value == null) voiceActor.postValue(Anilist.query.getVoiceActorsDetails(m))
}

private val calendar: MutableLiveData<Map<String, MutableList<Media>>> = MutableLiveData(null)
fun getCalendar(): LiveData<Map<String, MutableList<Media>>> = calendar
suspend fun loadCalendar() {
Expand Down
69 changes: 55 additions & 14 deletions app/src/main/res/layout/activity_author.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,61 @@

</com.google.android.material.appbar.AppBarLayout>

<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="64dp"
android:orientation="vertical">

<TextView
android:id="@+id/charactersText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="32dp"
android:fontFamily="@font/poppins_bold"
android:padding="8dp"
android:text="@string/characters"
android:textSize="18sp"
android:visibility="gone"
tools:visibility="visible" />

<ani.dantotsu.FadingEdgeRecyclerView
android:id="@+id/charactersRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:nestedScrollingEnabled="true"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:requiresFadingEdge="horizontal"
tools:itemCount="4"
tools:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/item_media_compact"
tools:orientation="horizontal" />


<androidx.recyclerview.widget.RecyclerView
android:id="@+id/studioRecycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:nestedScrollingEnabled="false"
android:paddingTop="16dp"
android:visibility="gone"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:itemCount="4"
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_media_compact"
tools:orientation="vertical"
tools:visibility="visible" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>

<ProgressBar
android:id="@+id/studioProgressBar"
style="?android:attr/progressBarStyle"
Expand All @@ -36,20 +91,6 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:visibility="gone" />

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/studioRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingTop="16dp"
android:visibility="gone"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:itemCount="4"
tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_media_compact"
tools:orientation="vertical"
tools:visibility="visible" />

<androidx.cardview.widget.CardView
android:id="@+id/studioClose"
android:layout_width="32dp"
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -887,4 +887,5 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc
<string name="ban">Ban</string>
<string name="voice_actors">Voice Actors</string>
<string name="download_permission_required">Permission is required to download</string>
<string name="media">Media</string>
</resources>

0 comments on commit e5cb7c7

Please sign in to comment.