Move all API calls off the render thread

This commit is contained in:
Nick Bisby 2019-03-13 12:20:54 -05:00
parent 29acf04dc6
commit 3a003d6361
No known key found for this signature in database
GPG Key ID: F6E0C4E6D0B5EB36
6 changed files with 39 additions and 40 deletions

View File

@ -6,32 +6,24 @@
<field id="movieID" type="string" />
<field id="description" type="string" />
<field id="favorite" type="boolean" />
<field id="seasons" type="associativearray" />
<field id="full_data" type="associativearray" onChange="setFields" />
<function name="favorite_toggle" />
</interface>
<script type="text/brightscript" uri="pkg:/source/config.brs" />
<script type="text/brightscript" uri="pkg:/source/JellyfinAPI.brs" />
<script type="text/brightscript" uri="pkg:/source/api_userlibrary.brs" />
<script type="text/brightscript">
<![CDATA[
sub setFields()
datum = m.top.full_data
m.top.title = datum.name
m.top.movieID = datum.id
m.top.posterURL = ImageURL(datum.id)
if datum.posterURL <> invalid
m.top.posterURL = datum.posterURL
else
m.top.posterURL = ""
end if
m.top.description = datum.overview
m.top.favorite = datum.UserData.isFavorite
end sub
sub favorite_toggle()
if m.top.favorite
UnmarkItemFavorite(m.top.full_data.id)
else
MarkItemFavorite(m.top.full_data.id)
end if
m.top.favorite = not m.top.favorite
end sub
]]>
</script>
</component>

View File

@ -8,15 +8,17 @@
<field id="full_data" type="associativearray" onChange="setFields" />
<function name="getPoster" />
</interface>
<script type="text/brightscript" uri="pkg:/source/config.brs" />
<script type="text/brightscript" uri="pkg:/source/JellyfinAPI.brs" />
<script type="text/brightscript">
<![CDATA[
sub setFields()
datum = m.top.full_data
m.top.title = datum.name
m.top.showID = datum.id
m.top.posterURL = ImageURL(datum.id)
if datum.posterURL <> invalid
m.top.posterURL = datum.posterURL
else
""
end if
m.top.description = datum.overview
end sub
]]>

View File

@ -10,25 +10,21 @@
<field id="full_data" type="associativearray" onChange="setFields" />
<function name="loadSeasons" />
</interface>
<script type="text/brightscript" uri="pkg:/source/config.brs" />
<script type="text/brightscript" uri="pkg:/source/JellyfinAPI.brs" />
<script type="text/brightscript">
<![CDATA[
sub setFields()
datum = m.top.full_data
m.top.title = datum.name
m.top.showID = datum.id
m.top.posterURL = ImageURL(datum.id)
if datum.posterURL <> invalid
m.top.posterURL = datum.posterURL
else
m.top.posterURL = ""
end if
m.top.description = datum.overview
'm.top.seasons = TVSeasons(datum.id)
'm.top.nextup = TVNext(datum.id)
end sub
sub loadSeasons()
datum = m.top.full_data
m.top.seasons = TVSeasons(datum.id)
end sub
]]>
</script>
</component>

View File

@ -27,16 +27,7 @@ sub itemContentChanged()
if itemData.taglines.count() > 0
setFieldText("tagline", itemData.taglines[0])
end if
setSeasons()
end sub
sub setSeasons()
itemData = m.top.itemContent
itemData.callFunc("loadSeasons")
row = m.top.findNode("TVSeasonSelect")
row.TVSeasonData = itemData.seasons
m.top.findNode("TVSeasonSelect").TVSeasonData = m.top.itemContent.seasons
end sub
sub setFieldText(field as string, value)

View File

@ -198,24 +198,40 @@ function ItemList(library_id=invalid as String, params={})
params["parentid"] = library_id
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
return getJson(resp)
data = getJson(resp)
for each item in data.Items
item.posterURL = ImageURL(item.id)
end for
return data
end function
function ItemMetaData(id as String)
url = Substitute("Users/{0}/Items/{1}", get_setting("active_user"), id)
resp = APIRequest(url)
return getJson(resp)
data = getJson(resp)
data.posterURL = ImageURL(data.id)
return data
end function
function TVSeasons(id as String)
url = Substitute("Shows/{0}/Seasons", id)
resp = APIRequest(url, {"UserId": get_setting("active_user")})
return getJson(resp)
data = getJson(resp)
for each item in data.Items
item.posterURL = ImageURL(item.id)
end for
return data
end function
function TVNext(id as String)
url = Substitute("Shows/NextUp", id)
resp = APIRequest(url, {"UserId": get_setting("active_user"), "SeriesId": id})
return getJson(resp)
data = getJson(resp)
for each item in data.Items
item.posterURL = ImageURL(item.id)
end for
return data
end function

View File

@ -293,6 +293,8 @@ sub ShowTVShowDetails(show_id)
content = createObject("roSGNode", "TVShowData")
content.full_data = ItemMetaData(show_id)
scene.itemContent = content
x = TVSeasons(show_id)
scene.itemContent.seasons = TVSeasons(show_id)
'buttons = scene.findNode("buttons")
'buttons.observeField("buttonSelected", port)