@@ -4,6 +4,14 @@
|
||||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2025-06-19T06:43:27.548662619Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/ward/.android/avd/Television_4K.avd" />
|
||||
</handle>
|
||||
</Target>
|
||||
</DropdownSelection>
|
||||
<DialogSelection />
|
||||
</SelectionState>
|
||||
</selectionStates>
|
||||
</component>
|
||||
|
||||
@@ -7,8 +7,8 @@ android {
|
||||
applicationId "us.materialio.app"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 128
|
||||
versionName "1.9.11"
|
||||
versionCode 129
|
||||
versionName "1.9.12"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
||||
@@ -63,7 +63,11 @@
|
||||
|
||||
|
||||
|
||||
<release version="1.9.11" date="2025-6-19">
|
||||
|
||||
<release version="1.9.12" date="2025-6-19">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.9.12</url>
|
||||
</release>
|
||||
<release version="1.9.11" date="2025-6-19">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.9.11</url>
|
||||
</release>
|
||||
<release version="1.9.10" date="2025-6-19">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.9.11",
|
||||
"version": "1.9.12",
|
||||
"description": "Modern material design for Invidious.",
|
||||
"author": {
|
||||
"name": "Ward Pearce",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.9.11",
|
||||
"version": "1.9.12",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
|
||||
@@ -174,10 +174,10 @@
|
||||
isAndroidTv = (await androidTv.isAndroidTv()).value;
|
||||
|
||||
if (isAndroidTv) {
|
||||
const mainContent = document.getElementById('main-content') as HTMLElement;
|
||||
const topContent = document.getElementById('top-content') as HTMLElement;
|
||||
Mousetrap.bind('down', () => {
|
||||
if (!mainContent.contains(document.activeElement)) {
|
||||
mainContent.focus();
|
||||
if (topContent.contains(document.activeElement)) {
|
||||
document.getElementById('main-content')?.focus();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@@ -250,7 +250,7 @@
|
||||
</nav>
|
||||
{/if}
|
||||
|
||||
<nav class="top">
|
||||
<nav class="top" id="top-content">
|
||||
{#if !mobileSearchShow}
|
||||
<button
|
||||
onclick={() => (mobileSearchShow = !mobileSearchShow)}
|
||||
|
||||
@@ -9,10 +9,13 @@
|
||||
import { Capacitor } from '@capacitor/core';
|
||||
import { onMount } from 'svelte';
|
||||
import { _ } from '$lib/i18n';
|
||||
import androidTv from '$lib/android/plugins/androidTv.js';
|
||||
|
||||
let { data } = $props();
|
||||
|
||||
let videos: PlaylistPageVideo[] | undefined = $state();
|
||||
let isAndroidTv: boolean = $state(false);
|
||||
|
||||
if (data.playlist.videos.length > 0) {
|
||||
videos = data.playlist.videos
|
||||
.sort((a: PlaylistPageVideo, b: PlaylistPageVideo) => {
|
||||
@@ -23,6 +26,7 @@
|
||||
});
|
||||
|
||||
onMount(async () => {
|
||||
isAndroidTv = (await androidTv.isAndroidTv()).value;
|
||||
for (let page = 1; page++; ) {
|
||||
const newVideos = (await getPlaylist(data.playlist.playlistId, page)).videos;
|
||||
if (newVideos.length === 0) {
|
||||
@@ -47,7 +51,9 @@
|
||||
{#if videos}
|
||||
<nav>
|
||||
<a
|
||||
href={`/watch/${videos[0].videoId}?playlist=${data.playlist.playlistId}`}
|
||||
href={!isAndroidTv
|
||||
? `/watch/${videos[0].videoId}?playlist=${data.playlist.playlistId}`
|
||||
: `/embed/${videos[0].videoId}?playlist=${data.playlist.playlistId}`}
|
||||
class="button circle extra no-margin"
|
||||
>
|
||||
<i>play_arrow</i>
|
||||
@@ -57,7 +63,9 @@
|
||||
</a>
|
||||
|
||||
<a
|
||||
href={`/watch/${unsafeRandomItem(videos).videoId}?playlist=${data.playlist.playlistId}`}
|
||||
href={!isAndroidTv
|
||||
? `/watch/${unsafeRandomItem(videos).videoId}?playlist=${data.playlist.playlistId}`
|
||||
: `/embed/${unsafeRandomItem(videos).videoId}?playlist=${data.playlist.playlistId}`}
|
||||
onclick={() =>
|
||||
playlistSettingsStore.set({ [data.playlist.playlistId]: { shuffle: true, loop: false } })}
|
||||
class="button circle extra no-margin border"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
LATEST_VERSION = "1.9.11"
|
||||
LATEST_VERSION = "1.9.12"
|
||||
RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D
|
||||
|
||||
WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")
|
||||
|
||||
Reference in New Issue
Block a user