diff --git a/OwnTube.tv/api/constants.ts b/OwnTube.tv/api/constants.ts index 681d215..e498f8d 100644 --- a/OwnTube.tv/api/constants.ts +++ b/OwnTube.tv/api/constants.ts @@ -1,6 +1,6 @@ -// Common query parameters for fetching videos that are classified as "local", "non-live", and "Safe-For-Work" import { VideosCommonQuery } from "@peertube/peertube-types"; +// Common query parameters for fetching videos that are classified as "local", "non-live", and "Safe-For-Work" export const commonQueryParams: VideosCommonQuery = { start: 0, count: 15, @@ -18,10 +18,13 @@ export enum QUERY_KEYS { instance = "instance", channel = "channel", channels = "channels", + channelsCollection = "channelsCollection", channelVideos = "channelVideos", channelPlaylists = "channelPlaylists", categories = "categories", + categoriesCollection = "categoriesCollection", playlists = "playlists", playlistVideos = "playlistVideos", playlistInfo = "playlistInfo", + playlistsCollection = "playlistsCollection", } diff --git a/OwnTube.tv/api/helpers.ts b/OwnTube.tv/api/helpers.ts index a3d25e8..17c32e0 100644 --- a/OwnTube.tv/api/helpers.ts +++ b/OwnTube.tv/api/helpers.ts @@ -1,5 +1,6 @@ -import { OwnTubeError } from "./models"; +import { GetVideosVideo, OwnTubeError } from "./models"; import { QUERY_KEYS } from "./constants"; +import { UseQueryResult } from "@tanstack/react-query"; const jsonPaths: Record = { videos: require("./../assets/testResponse-videos.json"), @@ -16,3 +17,12 @@ export const retry = (failureCount: number, error: OwnTubeError) => { } return failureCount < 5; }; + +export const combineCollectionQueryResults = ( + result: UseQueryResult<{ data: Array; total: number } & T, OwnTubeError>[], +) => { + return { + data: result.map(({ data }) => data).filter((item) => Number(item?.total) > 0), + isFetching: result.some(({ isFetching }) => isFetching), + }; +}; diff --git a/OwnTube.tv/api/queries/categories.ts b/OwnTube.tv/api/queries/categories.ts index 89d441d..8d0fe30 100644 --- a/OwnTube.tv/api/queries/categories.ts +++ b/OwnTube.tv/api/queries/categories.ts @@ -1,9 +1,10 @@ import { useLocalSearchParams } from "expo-router"; import { RootStackParams } from "../../app/_layout"; -import { useQuery } from "@tanstack/react-query"; +import { useQueries, useQuery } from "@tanstack/react-query"; import { QUERY_KEYS } from "../constants"; import { CategoriesApiImpl } from "../categoriesApi"; -import { retry } from "../helpers"; +import { combineCollectionQueryResults, retry } from "../helpers"; +import { ApiServiceImpl } from "../peertubeVideosApi"; export const useGetCategoriesQuery = ({ enabled = true }: { enabled?: boolean }) => { const { backend } = useLocalSearchParams(); @@ -18,3 +19,26 @@ export const useGetCategoriesQuery = ({ enabled = true }: { enabled?: boolean }) retry, }); }; + +export const useGetCategoriesCollectionQuery = (categories: Array<{ name: string; id: number }> = []) => { + const { backend } = useLocalSearchParams(); + + return useQueries({ + queries: categories?.map(({ name, id }) => ({ + queryKey: [QUERY_KEYS.categoriesCollection, id, backend], + queryFn: async () => { + const res = await ApiServiceImpl.getVideos(backend!, { + categoryOneOf: [id], + count: 4, + sort: "-publishedAt", + }); + + return { ...res, name, id }; + }, + retry, + refetchOnWindowFocus: false, + enabled: !!backend, + })), + combine: combineCollectionQueryResults<{ name: string; id: number }>, + }); +}; diff --git a/OwnTube.tv/api/queries/channels.ts b/OwnTube.tv/api/queries/channels.ts index 1b57ef6..d1570e4 100644 --- a/OwnTube.tv/api/queries/channels.ts +++ b/OwnTube.tv/api/queries/channels.ts @@ -1,6 +1,6 @@ -import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; +import { useInfiniteQuery, useQueries, useQuery } from "@tanstack/react-query"; import { ChannelsApiImpl } from "../channelsApi"; -import { retry } from "../helpers"; +import { combineCollectionQueryResults, retry } from "../helpers"; import { VideosCommonQuery } from "@peertube/peertube-types"; import { useLocalSearchParams } from "expo-router"; import { RootStackParams } from "../../app/_layout"; @@ -94,3 +94,21 @@ export const useGetChannelPlaylistsQuery = (channelHandle?: string) => { retry, }); }; + +export const useGetChannelsCollectionQuery = (channelIds: string[] = []) => { + const { backend } = useLocalSearchParams(); + + return useQueries({ + queries: channelIds?.map((id) => ({ + queryKey: [QUERY_KEYS.channelsCollection, backend, id], + queryFn: async () => { + const res = await ChannelsApiImpl.getChannelVideos(backend!, id, { count: 4 }); + return { ...res, id }; + }, + retry, + refetchOnWindowFocus: false, + enabled: !!backend, + })), + combine: combineCollectionQueryResults<{ id: string }>, + }); +}; diff --git a/OwnTube.tv/api/queries/playlists.ts b/OwnTube.tv/api/queries/playlists.ts index 9049f58..40c3ed6 100644 --- a/OwnTube.tv/api/queries/playlists.ts +++ b/OwnTube.tv/api/queries/playlists.ts @@ -1,10 +1,11 @@ import { useLocalSearchParams } from "expo-router"; import { RootStackParams } from "../../app/_layout"; -import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; +import { useInfiniteQuery, useQueries, useQuery } from "@tanstack/react-query"; import { QUERY_KEYS } from "../constants"; import { PlaylistsApiImpl } from "../playlistsApi"; -import { retry } from "../helpers"; +import { combineCollectionQueryResults, retry } from "../helpers"; import { GetVideosVideo } from "../models"; +import { VideoPlaylist } from "@peertube/peertube-types"; export const useGetPlaylistsQuery = ({ enabled = true, @@ -80,3 +81,25 @@ export const useGetPlaylistInfoQuery = (playlistId?: number) => { retry, }); }; + +export const useGetPlaylistsCollectionQuery = (playlists: Array = []) => { + const { backend } = useLocalSearchParams(); + + return useQueries({ + queries: playlists.map(({ displayName, id, videoChannel }) => ({ + queryKey: [QUERY_KEYS.playlistsCollection, id, backend], + queryFn: async () => { + const res = await PlaylistsApiImpl.getPlaylistVideos(backend, id, { count: 4 }); + return { ...res, id, displayName, videoChannel }; + }, + retry, + refetchOnWindowFocus: false, + enabled: !!backend, + })), + combine: combineCollectionQueryResults<{ + id: number; + displayName: string; + videoChannel: VideoPlaylist["videoChannel"]; + }>, + }); +}; diff --git a/OwnTube.tv/assets/fonts/icomoon.ttf b/OwnTube.tv/assets/fonts/icomoon.ttf index a7acbb3..66edd7f 100644 Binary files a/OwnTube.tv/assets/fonts/icomoon.ttf and b/OwnTube.tv/assets/fonts/icomoon.ttf differ diff --git a/OwnTube.tv/assets/selection.json b/OwnTube.tv/assets/selection.json index a7f5726..1a8cc66 100644 --- a/OwnTube.tv/assets/selection.json +++ b/OwnTube.tv/assets/selection.json @@ -1 +1 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M128 426.667h469.333v85.333h-469.333v-85.333zM128 256h469.333v85.333h-469.333v-85.333zM128 597.333h298.667v85.333h-298.667v-85.333zM682.667 554.667v341.333l256-170.667-256-170.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Playlist"]},"attrs":[{}],"properties":{"order":27,"id":25,"name":"Playlist","prevSize":32,"code":59673},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M430.507 665.173l60.16 60.16 213.333-213.333-213.333-213.333-60.16 60.16 110.080 110.507h-412.587v85.333h412.587l-110.080 110.507zM810.667 128h-597.333c-22.632 0-44.337 8.99-60.34 24.994s-24.994 37.708-24.994 60.34v170.667h85.333v-170.667h597.333v597.333h-597.333v-170.667h-85.333v170.667c0 22.63 8.99 44.335 24.994 60.339s37.708 24.994 60.34 24.994h597.333c46.933 0 85.333-38.4 85.333-85.333v-597.333c0-46.933-38.4-85.333-85.333-85.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Exit"]},"attrs":[{}],"properties":{"order":26,"id":24,"name":"Exit","prevSize":32,"code":59669},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M341.333 896v-85.333h-170.667c-23.467 0-43.549-8.35-60.245-25.045s-25.059-36.791-25.088-60.288v-512c0-23.467 8.363-43.549 25.088-60.245s36.807-25.059 60.245-25.088h682.667c23.467 0 43.563 8.363 60.288 25.088s25.075 36.807 25.045 60.245v512c0 23.467-8.35 43.563-25.045 60.288s-36.791 25.075-60.288 25.045h-170.667v85.333h-341.333zM170.667 725.333h682.667v-512h-682.667v512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Channel"]},"attrs":[{}],"properties":{"order":25,"id":23,"name":"Channel","prevSize":32,"code":59670},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M277.333 469.333l234.667-384 234.667 384h-469.333zM746.667 938.667c-53.333 0-98.658-18.658-135.979-55.979s-55.991-82.658-56.021-136.021c-0.030-53.363 18.645-98.688 56.021-135.979s82.701-55.966 135.979-56.021c53.278-0.055 98.615 18.615 136.021 56.021s56.064 82.731 55.979 135.979c-0.085 53.248-18.743 98.59-55.979 136.021s-82.573 56.094-136.021 55.979zM128 917.333v-341.333h341.333v341.333h-341.333zM746.667 853.333c29.867 0 55.113-10.313 75.733-30.933s30.933-45.867 30.933-75.733c0-29.867-10.313-55.113-30.933-75.733s-45.867-30.933-75.733-30.933c-29.867 0-55.113 10.313-75.733 30.933s-30.933 45.867-30.933 75.733c0 29.867 10.313 55.113 30.933 75.733s45.867 30.933 75.733 30.933zM213.333 832h170.667v-170.667h-170.667v170.667zM428.8 384h166.4l-83.2-134.4-83.2 134.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Category"]},"attrs":[{}],"properties":{"order":24,"id":22,"name":"Category","prevSize":32,"code":59671},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M128 768v-85.333h768v85.333h-768zM128 554.667v-85.333h768v85.333h-768zM128 341.333v-85.333h768v85.333h-768z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Menu"]},"attrs":[{}],"properties":{"order":23,"id":21,"name":"Menu","prevSize":32,"code":59672},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M512 298.667v170.667l-256-213.333 256-213.333v170.667c188.514 0 341.333 152.82 341.333 341.333s-152.819 341.333-341.333 341.333c-188.513 0-341.333-152.819-341.333-341.333h85.333c0 141.385 114.615 256 256 256s256-114.615 256-256c0-141.385-114.615-256-256-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Restart"]},"attrs":[{}],"properties":{"order":22,"id":20,"name":"Restart","prevSize":32,"code":59668},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M853.329 469.333v85.333h-512l234.666 234.667-60.587 60.587-337.92-337.92 337.92-337.922 60.587 60.587-234.666 234.668h512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Arrow Left"]},"attrs":[{}],"properties":{"order":2,"id":19,"name":"Arrow-Left","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M316.16 366.081l195.84 195.839 195.84-195.839 60.16 60.586-256 256-256-256 60.16-60.586z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Chevron"]},"attrs":[{}],"properties":{"order":3,"id":18,"name":"Chevron","prevSize":32,"code":59649},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M273.067 810.667l-59.733-59.733 238.933-238.933-238.933-238.933 59.733-59.733 238.933 238.933 238.933-238.933 59.733 59.733-238.933 238.933 238.933 238.933-59.733 59.733-238.933-238.933-238.933 238.933z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Close"]},"attrs":[{}],"properties":{"order":4,"id":17,"name":"Close","prevSize":32,"code":59650},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M298.667 768v-682.667h554.667v682.667h-554.667zM384 682.667h384v-512h-384v512zM128 938.667v-682.667h85.333v597.333h469.333v85.333h-554.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Content Copy"]},"attrs":[{}],"properties":{"order":5,"id":16,"name":"Content-Copy","prevSize":32,"code":59651},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M512 896c-106.667 0-197.333-37.333-272-112s-112-165.333-112-272c0-106.667 37.333-197.333 112-272s165.333-112 272-112c9.954 0 19.742 0.355 29.355 1.067s19.029 1.778 28.245 3.2c-29.154 20.622-52.45 47.474-69.888 80.555s-26.142 68.807-26.112 107.179c0 64 22.4 118.4 67.2 163.2s99.2 67.2 163.2 67.2c39.113 0 75.021-8.717 107.733-26.155s59.379-40.717 80-69.845c1.421 9.246 2.487 18.658 3.2 28.245s1.067 19.371 1.067 29.355c0 106.667-37.333 197.333-112 272s-165.333 112-272 112zM512 810.667c62.579 0 118.754-17.25 168.533-51.755s86.046-79.475 108.8-134.912c-14.221 3.554-28.446 6.4-42.667 8.533s-28.446 3.2-42.667 3.2c-87.467 0-161.963-30.763-223.488-92.288s-92.274-136.007-92.245-223.445c0-14.222 1.067-28.445 3.2-42.667s4.978-28.445 8.533-42.667c-55.467 22.755-100.451 59.022-134.955 108.8s-51.741 105.954-51.712 168.533c0 82.487 29.155 152.887 87.467 211.2s128.713 87.467 211.2 87.467z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Dark mode"]},"attrs":[{}],"properties":{"order":6,"id":15,"name":"Dark-mode","prevSize":32,"code":59652},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M490.667 128c-198.399 0-366.079 129.28-425.385 308.053l101.12 33.28c44.8-136.107 173.227-234.667 324.265-234.667 83.627 0 159.147 30.72 218.453 80.213l-111.787 111.787h298.667v-298.667l-110.933 110.933c-78.933-68.267-181.333-110.933-294.4-110.933zM810.667 597.333v256c0 47.36-37.973 85.333-85.333 85.333h-85.333c-22.63 0-44.335-8.99-60.339-24.994s-24.994-37.709-24.994-60.339v-256c0-22.63 8.99-44.335 24.994-60.339s37.709-24.994 60.339-24.994h85.333c22.635 0 44.339 8.99 60.339 24.994 16.004 16.004 24.994 37.709 24.994 60.339zM640 597.333v256h85.333v-256h-85.333zM469.333 853.333c0 22.63-8.99 44.335-24.994 60.339-16 16.004-37.706 24.994-60.338 24.994h-170.667v-85.333h170.667v-85.333h-85.333v-85.333h85.333v-85.333h-170.667v-85.333h170.667c22.632 0 44.338 8.99 60.338 24.994 16.004 16.004 24.994 37.709 24.994 60.339v64c0 16.973-6.741 33.254-18.743 45.257s-28.282 18.743-45.255 18.743c16.974 0 33.253 6.741 45.255 18.743s18.743 28.284 18.743 45.257v64z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Fast forward 30"]},"attrs":[{}],"properties":{"order":7,"id":14,"name":"Fast-forward-30","prevSize":32,"code":59653},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M597.333 597.333h213.333v85.333h-128v128h-85.333v-213.333zM213.333 597.333h213.333v213.333h-85.333v-128h-128v-85.333zM341.333 213.333h85.333v213.333h-213.333v-85.333h128v-128zM810.667 341.333v85.333h-213.333v-213.333h85.333v128h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Fullscreen Exit"]},"attrs":[{}],"properties":{"order":8,"id":13,"name":"Fullscreen-Exit","prevSize":32,"code":59654},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M213.333 213.333h213.333v85.333h-128v128h-85.333v-213.333zM597.333 213.333h213.333v213.333h-85.333v-128h-128v-85.333zM725.333 597.333h85.333v213.333h-213.333v-85.333h128v-128zM426.667 725.333v85.333h-213.333v-213.333h85.333v128h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Fullscreen"]},"attrs":[{}],"properties":{"order":9,"id":12,"name":"Fullscreen","prevSize":32,"code":59655},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M512 896c-98.133 0-183.637-32.525-256.512-97.579s-114.659-146.304-125.355-243.755h87.467c9.955 73.954 42.851 135.113 98.688 183.467s121.075 72.533 195.712 72.533c83.2 0 153.783-28.971 211.755-86.912s86.942-128.525 86.912-211.755c-0.030-83.23-29.001-153.799-86.912-211.712s-128.499-86.898-211.755-86.955c-49.067 0-94.933 11.378-137.6 34.133s-78.578 54.045-107.733 93.867h117.333v85.333h-256v-256h85.333v100.267c36.267-45.511 80.541-80.711 132.821-105.6s107.563-37.333 165.845-37.333c53.333 0 103.296 10.141 149.888 30.421s87.125 47.645 121.6 82.091c34.475 34.446 61.854 74.979 82.133 121.6s30.409 96.585 30.379 149.888c-0.030 53.303-10.155 103.266-30.379 149.888s-47.603 87.155-82.133 121.6c-34.53 34.445-75.063 61.824-121.6 82.133s-96.499 30.434-149.888 30.379zM631.467 691.2l-162.133-162.133v-230.4h85.333v196.267l136.533 136.533-59.733 59.733z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["History"]},"attrs":[{}],"properties":{"order":10,"id":11,"name":"History","prevSize":32,"code":59656},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M256 810.667h128v-256h256v256h128v-384l-256-192-256 192v384zM170.667 896v-512l341.333-256 341.333 256v512h-298.667v-256h-85.333v256h-298.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Home"]},"attrs":[{}],"properties":{"order":11,"id":10,"name":"Home","prevSize":32,"code":59657},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M469.333 384h85.333v-85.333h-85.333zM512 853.333c-188.16 0-341.333-153.173-341.333-341.333s153.173-341.333 341.333-341.333c188.16 0 341.333 153.173 341.333 341.333s-153.173 341.333-341.333 341.333zM512 85.333c-56.030 0-111.513 11.036-163.278 32.478s-98.801 52.87-138.421 92.49c-80.015 80.016-124.968 188.54-124.968 301.699 0 113.161 44.952 221.683 124.968 301.7 39.62 39.62 86.655 71.044 138.421 92.489 51.765 21.44 107.248 32.478 163.278 32.478 113.161 0 221.683-44.954 301.7-124.966 80.013-80.017 124.966-188.54 124.966-301.7 0-56.030-11.038-111.513-32.478-163.278-21.444-51.766-52.868-98.801-92.489-138.421s-86.656-71.048-138.423-92.49c-51.763-21.442-107.247-32.478-163.277-32.478zM469.333 725.333h85.333v-256h-85.333v256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Information"]},"attrs":[{}],"properties":{"order":12,"id":9,"name":"Information","prevSize":32,"code":59658},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M512 640c35.554 0 65.779-12.446 90.667-37.333s37.333-55.113 37.333-90.667c0-35.554-12.446-65.779-37.333-90.667-24.887-24.889-55.113-37.333-90.667-37.333s-65.779 12.445-90.667 37.333c-24.889 24.887-37.333 55.113-37.333 90.667s12.445 65.779 37.333 90.667c24.887 24.887 55.113 37.333 90.667 37.333zM512 725.333c-59.021 0-109.326-20.809-150.912-62.421s-62.393-91.917-62.421-150.912c-0.029-58.995 20.779-109.298 62.421-150.912s91.947-62.421 150.912-62.421c58.965 0 109.282 20.807 150.955 62.421s62.464 91.917 62.379 150.912c-0.085 58.995-20.894 109.312-62.421 150.955s-91.831 62.434-150.912 62.379zM213.333 554.667h-170.667v-85.333h170.667v85.333zM981.333 554.667h-170.667v-85.333h170.667v85.333zM469.333 213.333v-170.667h85.333v170.667h-85.333zM469.333 981.333v-170.667h85.333v170.667h-85.333zM273.067 330.667l-107.733-103.467 60.8-62.933 102.4 106.667-55.467 59.733zM797.867 859.733l-103.467-107.733 56.533-58.667 107.733 103.467-60.8 62.933zM693.333 273.067l103.467-107.733 62.933 60.8-106.667 102.4-59.733-55.467zM164.267 797.867l107.733-103.467 58.667 56.533-103.467 107.733-62.933-60.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Light mode"]},"attrs":[{}],"properties":{"order":13,"id":8,"name":"Light-mode","prevSize":32,"code":59659},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M597.333 810.667h170.667v-597.333h-170.667zM256 810.667h170.667v-597.333h-170.667v597.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Pause"]},"attrs":[{}],"properties":{"order":14,"id":7,"name":"Pause","prevSize":32,"code":59660},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M298.667 176.64v682.666l512-341.333-512-341.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Play"]},"attrs":[{}],"properties":{"order":15,"id":6,"name":"Play","prevSize":32,"code":59661},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M533.333 128c198.4 0 366.080 129.28 425.387 308.053l-101.12 33.28c-44.8-136.107-173.227-234.667-324.267-234.667-83.627 0-159.147 30.72-218.453 80.213l111.787 111.787h-298.667v-298.667l110.933 110.933c78.933-68.267 181.333-110.933 294.4-110.933zM426.667 512v426.667h-85.333v-341.333h-85.333v-85.333h170.667zM512 512h256v85.333h-170.667v85.333h85.333c22.63 0 44.335 8.99 60.339 24.994s24.994 37.709 24.994 60.339v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-170.667v-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Rewind 15"]},"attrs":[{}],"properties":{"order":16,"id":5,"name":"Rewind-15","prevSize":32,"code":59662},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M511.996 640c70.694 0 128-57.306 128-128s-57.306-128-128-128c-70.69 0-127.998 57.306-127.998 128s57.308 128 127.998 128z","M377.598 802.133l17.067 136.533h234.669l17.067-136.533c8.533-3.554 17.067-7.821 25.6-12.8s16.708-10.313 24.533-16l125.867 53.333 117.333-202.667-109.867-83.2c1.421-4.979 2.133-9.783 2.133-14.421v-28.757c0-4.638-0.358-9.442-1.067-14.421l109.862-83.2-117.333-202.667-126.929 53.333c-7.795-5.689-15.787-11.022-23.979-16s-16.913-9.245-26.155-12.8l-17.067-136.533h-234.669l-17.067 136.533c-8.533 3.555-17.067 7.822-25.6 12.8s-16.711 10.311-24.533 16l-126.933-53.333-117.333 202.667 109.867 83.2c-0.711 4.979-1.067 9.783-1.067 14.421v28.8c0 4.608 0.355 9.399 1.067 14.379l-109.867 83.2 117.333 202.667 126.933-53.333c7.851 5.687 15.858 11.021 24.021 16s16.868 9.246 26.112 12.8zM553.6 853.333h-84.267l-13.867-113.067c-22.016-5.662-42.455-14.007-61.314-25.045s-36.11-24.734-51.755-41.088l-105.6 44.8-41.6-72.533 91.733-69.333c-3.555-10.667-6.045-21.333-7.467-32s-2.133-21.687-2.133-33.067c0-12.087 0.711-23.467 2.133-34.133s3.911-21.333 7.467-32l-91.733-68.267 41.6-72.533 105.6 43.733c15.673-15.616 32.925-28.942 51.755-39.979s39.268-19.399 61.314-25.088l14.933-113.067h84.267l13.867 113.067c22.071 5.717 42.522 14.080 61.355 25.088 18.829 11.008 36.066 24.69 51.712 41.045l105.6-44.8 41.596 72.533-91.729 69.333c3.554 10.014 6.042 20.51 7.467 31.488 1.421 10.978 2.133 22.174 2.133 33.579s-0.713 22.613-2.133 33.621c-1.425 11.008-3.913 21.491-7.467 31.445l91.729 69.333-41.596 72.533-105.6-43.733c-15.616 15.671-32.853 29.013-51.712 40.021s-39.313 19.358-61.355 25.045l-14.933 113.067z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Settings"]},"attrs":[{},{}],"properties":{"order":17,"id":4,"name":"Settings","prevSize":32,"code":59663},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M768 938.667c-35.554 0-65.779-12.446-90.667-37.333s-37.333-55.113-37.333-90.667c0-4.979 0.354-10.142 1.067-15.488s1.779-10.142 3.2-14.379l-300.8-174.933c-12.089 10.667-25.6 19.029-40.533 25.088s-30.578 9.075-46.933 9.045c-35.555 0-65.778-12.446-90.667-37.333s-37.333-55.113-37.333-90.667c0-35.554 12.445-65.779 37.333-90.667 24.889-24.889 55.111-37.333 90.667-37.333 16.355 0 32 3.029 46.933 9.088s28.445 14.407 40.533 25.045l300.8-174.933c-1.421-4.267-2.487-9.059-3.2-14.379s-1.067-10.482-1.067-15.488c0-35.555 12.446-65.778 37.333-90.667s55.113-37.333 90.667-37.333c35.554 0 65.779 12.445 90.667 37.333s37.333 55.111 37.333 90.667c0 35.555-12.446 65.778-37.333 90.667s-55.113 37.333-90.667 37.333c-16.354 0-32-3.015-46.933-9.045s-28.446-14.393-40.533-25.088l-300.8 174.933c1.422 4.267 2.489 9.075 3.2 14.421s1.067 10.496 1.067 15.445c0 4.949-0.355 10.112-1.067 15.488s-1.778 10.167-3.2 14.379l300.8 174.933c12.087-10.667 25.6-19.017 40.533-25.045s30.579-9.058 46.933-9.088c35.554 0 65.779 12.446 90.667 37.333s37.333 55.113 37.333 90.667c0 35.554-12.446 65.779-37.333 90.667s-55.113 37.333-90.667 37.333zM768 256c12.087 0 22.229-4.082 30.421-12.245s12.275-18.304 12.245-30.421c-0.030-12.117-4.126-22.243-12.288-30.379s-18.291-12.231-30.379-12.288c-12.087-0.057-22.217 4.039-30.379 12.288s-12.258 18.375-12.288 30.379c-0.030 12.003 4.066 22.144 12.288 30.421s18.347 12.359 30.379 12.245zM256 554.667c12.089 0 22.229-4.096 30.421-12.288s12.274-18.317 12.245-30.379c-0.029-12.062-4.125-22.187-12.288-30.379s-18.29-12.288-30.379-12.288c-12.089 0-22.215 4.096-30.379 12.288s-12.259 18.317-12.288 30.379c-0.029 12.062 4.067 22.199 12.288 30.421s18.347 12.301 30.379 12.245zM768 853.333c12.087 0 22.229-4.096 30.421-12.288s12.275-18.317 12.245-30.379c-0.030-12.062-4.126-22.187-12.288-30.379s-18.291-12.288-30.379-12.288c-12.087 0-22.217 4.096-30.379 12.288s-12.258 18.317-12.288 30.379c-0.030 12.062 4.066 22.199 12.288 30.421s18.347 12.301 30.379 12.245z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Share"]},"attrs":[{}],"properties":{"order":18,"id":3,"name":"Share","prevSize":32,"code":59664},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M256 810.667c0 22.63 8.99 44.335 24.994 60.339s37.708 24.994 60.34 24.994h341.333c22.63 0 44.335-8.99 60.339-24.994s24.994-37.709 24.994-60.339v-512h-512v512zM341.333 384h341.333v426.667h-341.333v-426.667zM661.333 170.667l-42.667-42.667h-213.333l-42.667 42.667h-149.333v85.333h597.333v-85.333h-149.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Trash"]},"attrs":[{}],"properties":{"order":19,"id":2,"name":"Trash","prevSize":32,"code":59665},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M512 170.667l-89.173 89.173 89.173 89.173zM182.187 128l-54.187 54.187 201.813 201.813h-201.813v256h170.667l213.333 213.333v-287.147l181.333 181.76c-28.587 21.76-60.587 39.68-96 49.92v88.32c58.88-13.653 112.213-40.533 157.013-77.227l87.467 87.040 54.187-54.187-384-384zM810.667 512c0 40.107-8.533 77.653-23.040 112.64l64.427 64.427c28.821-54.575 43.904-115.349 43.947-177.067 0-182.613-128-335.36-298.667-374.187v87.893c123.307 36.693 213.333 151.040 213.333 286.293zM704 512c0-75.52-42.667-140.373-106.667-171.947v94.293l104.533 104.533c2.133-8.533 2.133-17.92 2.133-26.88z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["volume Off"]},"attrs":[{}],"properties":{"order":20,"id":1,"name":"Volume-Off","prevSize":32,"code":59666},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M597.333 137.812v87.893c123.307 36.693 213.333 151.040 213.333 286.294s-90.027 249.173-213.333 285.867v88.32c170.667-38.827 298.667-191.573 298.667-374.187s-128-335.361-298.667-374.188zM704 512c0-75.52-42.667-140.374-106.667-171.948v342.614c64-30.293 106.667-95.573 106.667-170.667zM128 383.999v256.001h170.667l213.333 213.333v-682.668l-213.333 213.333h-170.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Volume"]},"attrs":[{}],"properties":{"order":21,"id":0,"name":"Volume","prevSize":32,"code":59667},"setIdx":0,"setId":2,"iconIdx":25}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M128 554.667h85.333v-85.333h-85.333v85.333zM128 725.333h85.333v-85.333h-85.333v85.333zM128 384h85.333v-85.333h-85.333v85.333zM298.667 554.667h597.333v-85.333h-597.333v85.333zM298.667 725.333h597.333v-85.333h-597.333v85.333zM298.667 298.667v85.333h597.333v-85.333h-597.333zM128 554.667h85.333v-85.333h-85.333v85.333zM128 725.333h85.333v-85.333h-85.333v85.333zM128 384h85.333v-85.333h-85.333v85.333zM298.667 554.667h597.333v-85.333h-597.333v85.333zM298.667 725.333h597.333v-85.333h-597.333v85.333zM298.667 298.667v85.333h597.333v-85.333h-597.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["List"]},"attrs":[{}],"properties":{"order":29,"id":27,"name":"List","prevSize":32,"code":59674},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M170.667 170.667h170.667v170.667h-170.667v-170.667zM426.667 170.667h170.667v170.667h-170.667v-170.667zM682.667 170.667h170.667v170.667h-170.667v-170.667zM170.667 426.667h170.667v170.667h-170.667v-170.667zM426.667 426.667h170.667v170.667h-170.667v-170.667zM682.667 426.667h170.667v170.667h-170.667v-170.667zM170.667 682.667h170.667v170.667h-170.667v-170.667zM426.667 682.667h170.667v170.667h-170.667v-170.667zM682.667 682.667h170.667v170.667h-170.667v-170.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Grid"]},"attrs":[{}],"properties":{"order":28,"id":26,"name":"Grid","prevSize":32,"code":59675},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M128 426.667h469.333v85.333h-469.333v-85.333zM128 256h469.333v85.333h-469.333v-85.333zM128 597.333h298.667v85.333h-298.667v-85.333zM682.667 554.667v341.333l256-170.667-256-170.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Playlist"]},"attrs":[{}],"properties":{"order":27,"id":25,"name":"Playlist","prevSize":32,"code":59673},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M430.507 665.173l60.16 60.16 213.333-213.333-213.333-213.333-60.16 60.16 110.080 110.507h-412.587v85.333h412.587l-110.080 110.507zM810.667 128h-597.333c-22.632 0-44.337 8.99-60.34 24.994s-24.994 37.708-24.994 60.34v170.667h85.333v-170.667h597.333v597.333h-597.333v-170.667h-85.333v170.667c0 22.63 8.99 44.335 24.994 60.339s37.708 24.994 60.34 24.994h597.333c46.933 0 85.333-38.4 85.333-85.333v-597.333c0-46.933-38.4-85.333-85.333-85.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Exit"]},"attrs":[{}],"properties":{"order":26,"id":24,"name":"Exit","prevSize":32,"code":59669},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M341.333 896v-85.333h-170.667c-23.467 0-43.549-8.35-60.245-25.045s-25.059-36.791-25.088-60.288v-512c0-23.467 8.363-43.549 25.088-60.245s36.807-25.059 60.245-25.088h682.667c23.467 0 43.563 8.363 60.288 25.088s25.075 36.807 25.045 60.245v512c0 23.467-8.35 43.563-25.045 60.288s-36.791 25.075-60.288 25.045h-170.667v85.333h-341.333zM170.667 725.333h682.667v-512h-682.667v512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Channel"]},"attrs":[{}],"properties":{"order":25,"id":23,"name":"Channel","prevSize":32,"code":59670},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M277.333 469.333l234.667-384 234.667 384h-469.333zM746.667 938.667c-53.333 0-98.658-18.658-135.979-55.979s-55.991-82.658-56.021-136.021c-0.030-53.363 18.645-98.688 56.021-135.979s82.701-55.966 135.979-56.021c53.278-0.055 98.615 18.615 136.021 56.021s56.064 82.731 55.979 135.979c-0.085 53.248-18.743 98.59-55.979 136.021s-82.573 56.094-136.021 55.979zM128 917.333v-341.333h341.333v341.333h-341.333zM746.667 853.333c29.867 0 55.113-10.313 75.733-30.933s30.933-45.867 30.933-75.733c0-29.867-10.313-55.113-30.933-75.733s-45.867-30.933-75.733-30.933c-29.867 0-55.113 10.313-75.733 30.933s-30.933 45.867-30.933 75.733c0 29.867 10.313 55.113 30.933 75.733s45.867 30.933 75.733 30.933zM213.333 832h170.667v-170.667h-170.667v170.667zM428.8 384h166.4l-83.2-134.4-83.2 134.4z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Category"]},"attrs":[{}],"properties":{"order":24,"id":22,"name":"Category","prevSize":32,"code":59671},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M128 768v-85.333h768v85.333h-768zM128 554.667v-85.333h768v85.333h-768zM128 341.333v-85.333h768v85.333h-768z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Menu"]},"attrs":[{}],"properties":{"order":23,"id":21,"name":"Menu","prevSize":32,"code":59672},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M512 298.667v170.667l-256-213.333 256-213.333v170.667c188.514 0 341.333 152.82 341.333 341.333s-152.819 341.333-341.333 341.333c-188.513 0-341.333-152.819-341.333-341.333h85.333c0 141.385 114.615 256 256 256s256-114.615 256-256c0-141.385-114.615-256-256-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Restart"]},"attrs":[{}],"properties":{"order":22,"id":20,"name":"Restart","prevSize":32,"code":59668},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M853.329 469.333v85.333h-512l234.666 234.667-60.587 60.587-337.92-337.92 337.92-337.922 60.587 60.587-234.666 234.668h512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Arrow Left"]},"attrs":[{}],"properties":{"order":2,"id":19,"name":"Arrow-Left","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M316.16 366.081l195.84 195.839 195.84-195.839 60.16 60.586-256 256-256-256 60.16-60.586z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Chevron"]},"attrs":[{}],"properties":{"order":3,"id":18,"name":"Chevron","prevSize":32,"code":59649},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M273.067 810.667l-59.733-59.733 238.933-238.933-238.933-238.933 59.733-59.733 238.933 238.933 238.933-238.933 59.733 59.733-238.933 238.933 238.933 238.933-59.733 59.733-238.933-238.933-238.933 238.933z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Close"]},"attrs":[{}],"properties":{"order":4,"id":17,"name":"Close","prevSize":32,"code":59650},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M298.667 768v-682.667h554.667v682.667h-554.667zM384 682.667h384v-512h-384v512zM128 938.667v-682.667h85.333v597.333h469.333v85.333h-554.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Content Copy"]},"attrs":[{}],"properties":{"order":5,"id":16,"name":"Content-Copy","prevSize":32,"code":59651},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M512 896c-106.667 0-197.333-37.333-272-112s-112-165.333-112-272c0-106.667 37.333-197.333 112-272s165.333-112 272-112c9.954 0 19.742 0.355 29.355 1.067s19.029 1.778 28.245 3.2c-29.154 20.622-52.45 47.474-69.888 80.555s-26.142 68.807-26.112 107.179c0 64 22.4 118.4 67.2 163.2s99.2 67.2 163.2 67.2c39.113 0 75.021-8.717 107.733-26.155s59.379-40.717 80-69.845c1.421 9.246 2.487 18.658 3.2 28.245s1.067 19.371 1.067 29.355c0 106.667-37.333 197.333-112 272s-165.333 112-272 112zM512 810.667c62.579 0 118.754-17.25 168.533-51.755s86.046-79.475 108.8-134.912c-14.221 3.554-28.446 6.4-42.667 8.533s-28.446 3.2-42.667 3.2c-87.467 0-161.963-30.763-223.488-92.288s-92.274-136.007-92.245-223.445c0-14.222 1.067-28.445 3.2-42.667s4.978-28.445 8.533-42.667c-55.467 22.755-100.451 59.022-134.955 108.8s-51.741 105.954-51.712 168.533c0 82.487 29.155 152.887 87.467 211.2s128.713 87.467 211.2 87.467z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Dark mode"]},"attrs":[{}],"properties":{"order":6,"id":15,"name":"Dark-mode","prevSize":32,"code":59652},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M490.667 128c-198.399 0-366.079 129.28-425.385 308.053l101.12 33.28c44.8-136.107 173.227-234.667 324.265-234.667 83.627 0 159.147 30.72 218.453 80.213l-111.787 111.787h298.667v-298.667l-110.933 110.933c-78.933-68.267-181.333-110.933-294.4-110.933zM810.667 597.333v256c0 47.36-37.973 85.333-85.333 85.333h-85.333c-22.63 0-44.335-8.99-60.339-24.994s-24.994-37.709-24.994-60.339v-256c0-22.63 8.99-44.335 24.994-60.339s37.709-24.994 60.339-24.994h85.333c22.635 0 44.339 8.99 60.339 24.994 16.004 16.004 24.994 37.709 24.994 60.339zM640 597.333v256h85.333v-256h-85.333zM469.333 853.333c0 22.63-8.99 44.335-24.994 60.339-16 16.004-37.706 24.994-60.338 24.994h-170.667v-85.333h170.667v-85.333h-85.333v-85.333h85.333v-85.333h-170.667v-85.333h170.667c22.632 0 44.338 8.99 60.338 24.994 16.004 16.004 24.994 37.709 24.994 60.339v64c0 16.973-6.741 33.254-18.743 45.257s-28.282 18.743-45.255 18.743c16.974 0 33.253 6.741 45.255 18.743s18.743 28.284 18.743 45.257v64z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Fast forward 30"]},"attrs":[{}],"properties":{"order":7,"id":14,"name":"Fast-forward-30","prevSize":32,"code":59653},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M597.333 597.333h213.333v85.333h-128v128h-85.333v-213.333zM213.333 597.333h213.333v213.333h-85.333v-128h-128v-85.333zM341.333 213.333h85.333v213.333h-213.333v-85.333h128v-128zM810.667 341.333v85.333h-213.333v-213.333h85.333v128h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Fullscreen Exit"]},"attrs":[{}],"properties":{"order":8,"id":13,"name":"Fullscreen-Exit","prevSize":32,"code":59654},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M213.333 213.333h213.333v85.333h-128v128h-85.333v-213.333zM597.333 213.333h213.333v213.333h-85.333v-128h-128v-85.333zM725.333 597.333h85.333v213.333h-213.333v-85.333h128v-128zM426.667 725.333v85.333h-213.333v-213.333h85.333v128h128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Fullscreen"]},"attrs":[{}],"properties":{"order":9,"id":12,"name":"Fullscreen","prevSize":32,"code":59655},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M512 896c-98.133 0-183.637-32.525-256.512-97.579s-114.659-146.304-125.355-243.755h87.467c9.955 73.954 42.851 135.113 98.688 183.467s121.075 72.533 195.712 72.533c83.2 0 153.783-28.971 211.755-86.912s86.942-128.525 86.912-211.755c-0.030-83.23-29.001-153.799-86.912-211.712s-128.499-86.898-211.755-86.955c-49.067 0-94.933 11.378-137.6 34.133s-78.578 54.045-107.733 93.867h117.333v85.333h-256v-256h85.333v100.267c36.267-45.511 80.541-80.711 132.821-105.6s107.563-37.333 165.845-37.333c53.333 0 103.296 10.141 149.888 30.421s87.125 47.645 121.6 82.091c34.475 34.446 61.854 74.979 82.133 121.6s30.409 96.585 30.379 149.888c-0.030 53.303-10.155 103.266-30.379 149.888s-47.603 87.155-82.133 121.6c-34.53 34.445-75.063 61.824-121.6 82.133s-96.499 30.434-149.888 30.379zM631.467 691.2l-162.133-162.133v-230.4h85.333v196.267l136.533 136.533-59.733 59.733z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["History"]},"attrs":[{}],"properties":{"order":10,"id":11,"name":"History","prevSize":32,"code":59656},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M256 810.667h128v-256h256v256h128v-384l-256-192-256 192v384zM170.667 896v-512l341.333-256 341.333 256v512h-298.667v-256h-85.333v256h-298.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Home"]},"attrs":[{}],"properties":{"order":11,"id":10,"name":"Home","prevSize":32,"code":59657},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M469.333 384h85.333v-85.333h-85.333zM512 853.333c-188.16 0-341.333-153.173-341.333-341.333s153.173-341.333 341.333-341.333c188.16 0 341.333 153.173 341.333 341.333s-153.173 341.333-341.333 341.333zM512 85.333c-56.030 0-111.513 11.036-163.278 32.478s-98.801 52.87-138.421 92.49c-80.015 80.016-124.968 188.54-124.968 301.699 0 113.161 44.952 221.683 124.968 301.7 39.62 39.62 86.655 71.044 138.421 92.489 51.765 21.44 107.248 32.478 163.278 32.478 113.161 0 221.683-44.954 301.7-124.966 80.013-80.017 124.966-188.54 124.966-301.7 0-56.030-11.038-111.513-32.478-163.278-21.444-51.766-52.868-98.801-92.489-138.421s-86.656-71.048-138.423-92.49c-51.763-21.442-107.247-32.478-163.277-32.478zM469.333 725.333h85.333v-256h-85.333v256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Information"]},"attrs":[{}],"properties":{"order":12,"id":9,"name":"Information","prevSize":32,"code":59658},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M512 640c35.554 0 65.779-12.446 90.667-37.333s37.333-55.113 37.333-90.667c0-35.554-12.446-65.779-37.333-90.667-24.887-24.889-55.113-37.333-90.667-37.333s-65.779 12.445-90.667 37.333c-24.889 24.887-37.333 55.113-37.333 90.667s12.445 65.779 37.333 90.667c24.887 24.887 55.113 37.333 90.667 37.333zM512 725.333c-59.021 0-109.326-20.809-150.912-62.421s-62.393-91.917-62.421-150.912c-0.029-58.995 20.779-109.298 62.421-150.912s91.947-62.421 150.912-62.421c58.965 0 109.282 20.807 150.955 62.421s62.464 91.917 62.379 150.912c-0.085 58.995-20.894 109.312-62.421 150.955s-91.831 62.434-150.912 62.379zM213.333 554.667h-170.667v-85.333h170.667v85.333zM981.333 554.667h-170.667v-85.333h170.667v85.333zM469.333 213.333v-170.667h85.333v170.667h-85.333zM469.333 981.333v-170.667h85.333v170.667h-85.333zM273.067 330.667l-107.733-103.467 60.8-62.933 102.4 106.667-55.467 59.733zM797.867 859.733l-103.467-107.733 56.533-58.667 107.733 103.467-60.8 62.933zM693.333 273.067l103.467-107.733 62.933 60.8-106.667 102.4-59.733-55.467zM164.267 797.867l107.733-103.467 58.667 56.533-103.467 107.733-62.933-60.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Light mode"]},"attrs":[{}],"properties":{"order":13,"id":8,"name":"Light-mode","prevSize":32,"code":59659},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M597.333 810.667h170.667v-597.333h-170.667zM256 810.667h170.667v-597.333h-170.667v597.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Pause"]},"attrs":[{}],"properties":{"order":14,"id":7,"name":"Pause","prevSize":32,"code":59660},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M298.667 176.64v682.666l512-341.333-512-341.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Play"]},"attrs":[{}],"properties":{"order":15,"id":6,"name":"Play","prevSize":32,"code":59661},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M533.333 128c198.4 0 366.080 129.28 425.387 308.053l-101.12 33.28c-44.8-136.107-173.227-234.667-324.267-234.667-83.627 0-159.147 30.72-218.453 80.213l111.787 111.787h-298.667v-298.667l110.933 110.933c78.933-68.267 181.333-110.933 294.4-110.933zM426.667 512v426.667h-85.333v-341.333h-85.333v-85.333h170.667zM512 512h256v85.333h-170.667v85.333h85.333c22.63 0 44.335 8.99 60.339 24.994s24.994 37.709 24.994 60.339v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-170.667v-256z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Rewind 15"]},"attrs":[{}],"properties":{"order":16,"id":5,"name":"Rewind-15","prevSize":32,"code":59662},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M511.996 640c70.694 0 128-57.306 128-128s-57.306-128-128-128c-70.69 0-127.998 57.306-127.998 128s57.308 128 127.998 128z","M377.598 802.133l17.067 136.533h234.669l17.067-136.533c8.533-3.554 17.067-7.821 25.6-12.8s16.708-10.313 24.533-16l125.867 53.333 117.333-202.667-109.867-83.2c1.421-4.979 2.133-9.783 2.133-14.421v-28.757c0-4.638-0.358-9.442-1.067-14.421l109.862-83.2-117.333-202.667-126.929 53.333c-7.795-5.689-15.787-11.022-23.979-16s-16.913-9.245-26.155-12.8l-17.067-136.533h-234.669l-17.067 136.533c-8.533 3.555-17.067 7.822-25.6 12.8s-16.711 10.311-24.533 16l-126.933-53.333-117.333 202.667 109.867 83.2c-0.711 4.979-1.067 9.783-1.067 14.421v28.8c0 4.608 0.355 9.399 1.067 14.379l-109.867 83.2 117.333 202.667 126.933-53.333c7.851 5.687 15.858 11.021 24.021 16s16.868 9.246 26.112 12.8zM553.6 853.333h-84.267l-13.867-113.067c-22.016-5.662-42.455-14.007-61.314-25.045s-36.11-24.734-51.755-41.088l-105.6 44.8-41.6-72.533 91.733-69.333c-3.555-10.667-6.045-21.333-7.467-32s-2.133-21.687-2.133-33.067c0-12.087 0.711-23.467 2.133-34.133s3.911-21.333 7.467-32l-91.733-68.267 41.6-72.533 105.6 43.733c15.673-15.616 32.925-28.942 51.755-39.979s39.268-19.399 61.314-25.088l14.933-113.067h84.267l13.867 113.067c22.071 5.717 42.522 14.080 61.355 25.088 18.829 11.008 36.066 24.69 51.712 41.045l105.6-44.8 41.596 72.533-91.729 69.333c3.554 10.014 6.042 20.51 7.467 31.488 1.421 10.978 2.133 22.174 2.133 33.579s-0.713 22.613-2.133 33.621c-1.425 11.008-3.913 21.491-7.467 31.445l91.729 69.333-41.596 72.533-105.6-43.733c-15.616 15.671-32.853 29.013-51.712 40.021s-39.313 19.358-61.355 25.045l-14.933 113.067z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Settings"]},"attrs":[{},{}],"properties":{"order":17,"id":4,"name":"Settings","prevSize":32,"code":59663},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M768 938.667c-35.554 0-65.779-12.446-90.667-37.333s-37.333-55.113-37.333-90.667c0-4.979 0.354-10.142 1.067-15.488s1.779-10.142 3.2-14.379l-300.8-174.933c-12.089 10.667-25.6 19.029-40.533 25.088s-30.578 9.075-46.933 9.045c-35.555 0-65.778-12.446-90.667-37.333s-37.333-55.113-37.333-90.667c0-35.554 12.445-65.779 37.333-90.667 24.889-24.889 55.111-37.333 90.667-37.333 16.355 0 32 3.029 46.933 9.088s28.445 14.407 40.533 25.045l300.8-174.933c-1.421-4.267-2.487-9.059-3.2-14.379s-1.067-10.482-1.067-15.488c0-35.555 12.446-65.778 37.333-90.667s55.113-37.333 90.667-37.333c35.554 0 65.779 12.445 90.667 37.333s37.333 55.111 37.333 90.667c0 35.555-12.446 65.778-37.333 90.667s-55.113 37.333-90.667 37.333c-16.354 0-32-3.015-46.933-9.045s-28.446-14.393-40.533-25.088l-300.8 174.933c1.422 4.267 2.489 9.075 3.2 14.421s1.067 10.496 1.067 15.445c0 4.949-0.355 10.112-1.067 15.488s-1.778 10.167-3.2 14.379l300.8 174.933c12.087-10.667 25.6-19.017 40.533-25.045s30.579-9.058 46.933-9.088c35.554 0 65.779 12.446 90.667 37.333s37.333 55.113 37.333 90.667c0 35.554-12.446 65.779-37.333 90.667s-55.113 37.333-90.667 37.333zM768 256c12.087 0 22.229-4.082 30.421-12.245s12.275-18.304 12.245-30.421c-0.030-12.117-4.126-22.243-12.288-30.379s-18.291-12.231-30.379-12.288c-12.087-0.057-22.217 4.039-30.379 12.288s-12.258 18.375-12.288 30.379c-0.030 12.003 4.066 22.144 12.288 30.421s18.347 12.359 30.379 12.245zM256 554.667c12.089 0 22.229-4.096 30.421-12.288s12.274-18.317 12.245-30.379c-0.029-12.062-4.125-22.187-12.288-30.379s-18.29-12.288-30.379-12.288c-12.089 0-22.215 4.096-30.379 12.288s-12.259 18.317-12.288 30.379c-0.029 12.062 4.067 22.199 12.288 30.421s18.347 12.301 30.379 12.245zM768 853.333c12.087 0 22.229-4.096 30.421-12.288s12.275-18.317 12.245-30.379c-0.030-12.062-4.126-22.187-12.288-30.379s-18.291-12.288-30.379-12.288c-12.087 0-22.217 4.096-30.379 12.288s-12.258 18.317-12.288 30.379c-0.030 12.062 4.066 22.199 12.288 30.421s18.347 12.301 30.379 12.245z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Share"]},"attrs":[{}],"properties":{"order":18,"id":3,"name":"Share","prevSize":32,"code":59664},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M256 810.667c0 22.63 8.99 44.335 24.994 60.339s37.708 24.994 60.34 24.994h341.333c22.63 0 44.335-8.99 60.339-24.994s24.994-37.709 24.994-60.339v-512h-512v512zM341.333 384h341.333v426.667h-341.333v-426.667zM661.333 170.667l-42.667-42.667h-213.333l-42.667 42.667h-149.333v85.333h597.333v-85.333h-149.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Trash"]},"attrs":[{}],"properties":{"order":19,"id":2,"name":"Trash","prevSize":32,"code":59665},"setIdx":0,"setId":2,"iconIdx":25},{"icon":{"paths":["M512 170.667l-89.173 89.173 89.173 89.173zM182.187 128l-54.187 54.187 201.813 201.813h-201.813v256h170.667l213.333 213.333v-287.147l181.333 181.76c-28.587 21.76-60.587 39.68-96 49.92v88.32c58.88-13.653 112.213-40.533 157.013-77.227l87.467 87.040 54.187-54.187-384-384zM810.667 512c0 40.107-8.533 77.653-23.040 112.64l64.427 64.427c28.821-54.575 43.904-115.349 43.947-177.067 0-182.613-128-335.36-298.667-374.187v87.893c123.307 36.693 213.333 151.040 213.333 286.293zM704 512c0-75.52-42.667-140.373-106.667-171.947v94.293l104.533 104.533c2.133-8.533 2.133-17.92 2.133-26.88z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["volume Off"]},"attrs":[{}],"properties":{"order":20,"id":1,"name":"Volume-Off","prevSize":32,"code":59666},"setIdx":0,"setId":2,"iconIdx":26},{"icon":{"paths":["M597.333 137.812v87.893c123.307 36.693 213.333 151.040 213.333 286.294s-90.027 249.173-213.333 285.867v88.32c170.667-38.827 298.667-191.573 298.667-374.187s-128-335.361-298.667-374.188zM704 512c0-75.52-42.667-140.374-106.667-171.948v342.614c64-30.293 106.667-95.573 106.667-170.667zM128 383.999v256.001h170.667l213.333 213.333v-682.668l-213.333 213.333h-170.667z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Volume"]},"attrs":[{}],"properties":{"order":21,"id":0,"name":"Volume","prevSize":32,"code":59667},"setIdx":0,"setId":2,"iconIdx":27}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/OwnTube.tv/components/EmptyPage.tsx b/OwnTube.tv/components/EmptyPage.tsx new file mode 100644 index 0000000..8ed782d --- /dev/null +++ b/OwnTube.tv/components/EmptyPage.tsx @@ -0,0 +1,31 @@ +import { LogoQuestionMarks } from "./Svg"; +import { StyleSheet, View } from "react-native"; +import { Typography } from "./Typography"; +import { useTheme } from "@react-navigation/native"; + +interface EmptyPageProps { + text: string; +} + +export const EmptyPage = ({ text }: EmptyPageProps) => { + const { colors } = useTheme(); + + return ( + + + + {text} + + + ); +}; + +const styles = StyleSheet.create({ + container: { + alignItems: "center", + flex: 1, + gap: 12, + justifyContent: "center", + }, + text: { fontSize: 18 }, +}); diff --git a/OwnTube.tv/components/Svg/LogoNoText.tsx b/OwnTube.tv/components/Svg/LogoNoText.tsx deleted file mode 100644 index 1fdeb22..0000000 --- a/OwnTube.tv/components/Svg/LogoNoText.tsx +++ /dev/null @@ -1,242 +0,0 @@ -import Svg, { Defs, ClipPath, Path, G } from "react-native-svg"; -import { SvgProps } from "react-native-svg/src/elements/Svg"; - -const SvgComponent = (props: SvgProps) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); -export { SvgComponent as LogoNoText }; diff --git a/OwnTube.tv/components/Svg/LogoQuestionMarks.tsx b/OwnTube.tv/components/Svg/LogoQuestionMarks.tsx new file mode 100644 index 0000000..cbeb4c1 --- /dev/null +++ b/OwnTube.tv/components/Svg/LogoQuestionMarks.tsx @@ -0,0 +1,23 @@ +import Svg, { Path } from "react-native-svg"; +import { SvgProps } from "react-native-svg/src/elements/Svg"; + +export const LogoQuestionMarks = (props: SvgProps) => { + return ( + + + + + + ); +}; diff --git a/OwnTube.tv/components/Svg/index.ts b/OwnTube.tv/components/Svg/index.ts index 8e7e2f4..f61b6c1 100644 --- a/OwnTube.tv/components/Svg/index.ts +++ b/OwnTube.tv/components/Svg/index.ts @@ -1,3 +1,3 @@ -export * from "./LogoNoText"; export * from "./Logo"; export * from "./PeertubeLogo"; +export * from "./LogoQuestionMarks"; diff --git a/OwnTube.tv/components/VideoGrid/PresentationSwitch.tsx b/OwnTube.tv/components/VideoGrid/PresentationSwitch.tsx new file mode 100644 index 0000000..48a10f4 --- /dev/null +++ b/OwnTube.tv/components/VideoGrid/PresentationSwitch.tsx @@ -0,0 +1,50 @@ +import { Button } from "../shared"; +import { StyleSheet, View } from "react-native"; +import { spacing } from "../../theme"; +import { useTheme } from "@react-navigation/native"; + +interface PresentationSwitchProps { + presentation?: "list" | "grid"; + handleSetPresentation: (presentation: "list" | "grid") => void; +} + +export const PresentationSwitch = ({ presentation, handleSetPresentation }: PresentationSwitchProps) => { + const { colors } = useTheme(); + return ( + +