feat: add new improved logo
Before Width: | Height: | Size: 18 KiB |
BIN
assets/spotube-logo-foreground.png
Normal file
After Width: | Height: | Size: 486 KiB |
BIN
assets/spotube-logo-item.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 435 KiB |
Before Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 112 KiB |
@ -1,349 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 762 762"
|
|
||||||
version="1.1"
|
|
||||||
id="svg270"
|
|
||||||
sodipodi:docname="spotube-logo.svg"
|
|
||||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
|
||||||
xml:space="preserve"
|
|
||||||
inkscape:export-filename="spotube-logo.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
width="762"
|
|
||||||
height="762"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:bx="https://boxy-svg.com"><sodipodi:namedview
|
|
||||||
id="namedview272"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="0.76199998"
|
|
||||||
inkscape:cx="194.22573"
|
|
||||||
inkscape:cy="314.96064"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="1001"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg270"
|
|
||||||
inkscape:lockguides="false"><inkscape:page
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
width="762"
|
|
||||||
height="762"
|
|
||||||
id="page3136" /><inkscape:page
|
|
||||||
x="640.44641"
|
|
||||||
y="132.29141"
|
|
||||||
width="89.999939"
|
|
||||||
height="89.999985"
|
|
||||||
id="page3138" /></sodipodi:namedview><defs
|
|
||||||
id="defs220"><linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient5535"><stop
|
|
||||||
style="stop-color:#00063b;stop-opacity:1;"
|
|
||||||
offset="0.25885531"
|
|
||||||
id="stop5531" /><stop
|
|
||||||
style="stop-color:#004256;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop5533" /></linearGradient><linearGradient
|
|
||||||
id="linearGradient2809"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color:#5668ea;stop-opacity:1;"
|
|
||||||
id="stop2803" /><stop
|
|
||||||
offset="0.60799998"
|
|
||||||
style="stop-color:#0093b1;stop-opacity:1;"
|
|
||||||
id="stop2805" /><stop
|
|
||||||
offset="0.94400001"
|
|
||||||
style="stop-color:#00a29f;stop-opacity:1;"
|
|
||||||
id="stop2807" /></linearGradient><linearGradient
|
|
||||||
id="linearGradient938"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color:#5869eb;stop-opacity:1;"
|
|
||||||
id="stop932" /><stop
|
|
||||||
offset="0.60799998"
|
|
||||||
style="stop-color:#0093b1;stop-opacity:1;"
|
|
||||||
id="stop934" /><stop
|
|
||||||
offset="0.94400001"
|
|
||||||
style="stop-color:#02a7a4;stop-opacity:1;"
|
|
||||||
id="stop936" /></linearGradient><radialGradient
|
|
||||||
id="gradient-2-0"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
cx="251.179"
|
|
||||||
cy="248.821"
|
|
||||||
r="241.45"
|
|
||||||
gradientTransform="translate(-1.768285,0.589104)"
|
|
||||||
xlink:href="#gradient-2" /><linearGradient
|
|
||||||
id="gradient-2"><stop
|
|
||||||
offset="0.841"
|
|
||||||
style="stop-color: rgb(255, 255, 255);"
|
|
||||||
id="stop169" /><stop
|
|
||||||
offset="1"
|
|
||||||
style="stop-color: rgb(201, 201, 201);"
|
|
||||||
id="stop171" /></linearGradient><filter
|
|
||||||
id="drop-shadow-filter-0"
|
|
||||||
x="-0.050892502"
|
|
||||||
y="-0.050892502"
|
|
||||||
width="1.1017849"
|
|
||||||
height="1.1017849"
|
|
||||||
bx:preset="drop-shadow 1 0 0 10 0.42 rgba(201,201,201,1)"><feGaussianBlur
|
|
||||||
in="SourceAlpha"
|
|
||||||
stdDeviation="10"
|
|
||||||
id="feGaussianBlur174" /><feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
id="feOffset176" /><feComponentTransfer
|
|
||||||
result="offsetblur"
|
|
||||||
id="feComponentTransfer179"><feFuncA
|
|
||||||
id="spread-ctrl"
|
|
||||||
type="linear"
|
|
||||||
slope="0.84" /></feComponentTransfer><feFlood
|
|
||||||
flood-color="rgba(201,201,201,1)"
|
|
||||||
id="feFlood181" /><feComposite
|
|
||||||
in2="offsetblur"
|
|
||||||
operator="in"
|
|
||||||
id="feComposite183" /><feMerge
|
|
||||||
id="feMerge189"><feMergeNode
|
|
||||||
id="feMergeNode185" /><feMergeNode
|
|
||||||
in="SourceGraphic"
|
|
||||||
id="feMergeNode187" /></feMerge></filter><linearGradient
|
|
||||||
id="gradient-4-3"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="47.146"
|
|
||||||
y1="18.044001"
|
|
||||||
x2="47.146"
|
|
||||||
y2="75.353996"
|
|
||||||
xlink:href="#gradient-4" /><linearGradient
|
|
||||||
id="gradient-4"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color: rgb(83, 240, 111);"
|
|
||||||
id="stop193" /><stop
|
|
||||||
offset="0.608"
|
|
||||||
style="stop-color: rgb(0, 177, 86);"
|
|
||||||
id="stop195" /><stop
|
|
||||||
offset="0.944"
|
|
||||||
style="stop-color: rgb(2, 167, 156);"
|
|
||||||
id="stop197" /></linearGradient><filter
|
|
||||||
id="inner-shadow-filter-0"
|
|
||||||
x="-0.064836091"
|
|
||||||
y="-0.071329232"
|
|
||||||
width="1.1296722"
|
|
||||||
height="1.108079"
|
|
||||||
bx:preset="inner-shadow 1 0 0 4 0.5 rgba(0,0,0,0.7)"><feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
id="feOffset200" /><feGaussianBlur
|
|
||||||
stdDeviation="4"
|
|
||||||
id="feGaussianBlur202"
|
|
||||||
result="result1" /><feComposite
|
|
||||||
operator="out"
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="result1"
|
|
||||||
id="feComposite204" /><feComponentTransfer
|
|
||||||
result="choke"
|
|
||||||
id="feComponentTransfer208"><feFuncA
|
|
||||||
type="linear"
|
|
||||||
slope="1"
|
|
||||||
id="feFuncA206" /></feComponentTransfer><feFlood
|
|
||||||
flood-color="rgba(0,0,0,0.7)"
|
|
||||||
result="color"
|
|
||||||
id="feFlood210" /><feComposite
|
|
||||||
operator="in"
|
|
||||||
in="color"
|
|
||||||
in2="choke"
|
|
||||||
result="shadow"
|
|
||||||
id="feComposite212" /><feComposite
|
|
||||||
operator="over"
|
|
||||||
in="shadow"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
id="feComposite214" /></filter><linearGradient
|
|
||||||
id="gradient-4-1"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="82.026001"
|
|
||||||
y1="144.832"
|
|
||||||
x2="82.026001"
|
|
||||||
y2="264.46201"
|
|
||||||
xlink:href="#linearGradient2809"
|
|
||||||
gradientTransform="translate(7.2213312)" /><linearGradient
|
|
||||||
id="gradient-4-2"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="143.69299"
|
|
||||||
y1="22.804001"
|
|
||||||
x2="143.69299"
|
|
||||||
y2="264.582"
|
|
||||||
xlink:href="#linearGradient938" /><linearGradient
|
|
||||||
id="gradient-4-0"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="205.862"
|
|
||||||
y1="146.28"
|
|
||||||
x2="205.862"
|
|
||||||
y2="265.91"
|
|
||||||
xlink:href="#gradient-4"
|
|
||||||
gradientTransform="translate(-7.2213312)" /><filter
|
|
||||||
style="color-interpolation-filters:sRGB"
|
|
||||||
inkscape:label="Drop Shadow"
|
|
||||||
id="filter2000"
|
|
||||||
x="-0.3425389"
|
|
||||||
y="-0.3425389"
|
|
||||||
width="1.6850778"
|
|
||||||
height="1.6850778"><feFlood
|
|
||||||
flood-opacity="1"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
id="feFlood1990" /><feComposite
|
|
||||||
in="flood"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="out"
|
|
||||||
result="composite1"
|
|
||||||
id="feComposite1992" /><feGaussianBlur
|
|
||||||
in="composite1"
|
|
||||||
stdDeviation="29.980818"
|
|
||||||
result="blur"
|
|
||||||
id="feGaussianBlur1994" /><feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
result="offset"
|
|
||||||
id="feOffset1996" /><feComposite
|
|
||||||
in="offset"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="atop"
|
|
||||||
result="fbSourceGraphic"
|
|
||||||
id="feComposite1998" /><feColorMatrix
|
|
||||||
result="fbSourceGraphicAlpha"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
|
||||||
id="feColorMatrix2062" /><feFlood
|
|
||||||
id="feFlood2064"
|
|
||||||
flood-opacity="1"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
in="fbSourceGraphic" /><feComposite
|
|
||||||
in2="fbSourceGraphic"
|
|
||||||
id="feComposite2066"
|
|
||||||
in="flood"
|
|
||||||
operator="out"
|
|
||||||
result="composite1" /><feGaussianBlur
|
|
||||||
id="feGaussianBlur2068"
|
|
||||||
in="composite1"
|
|
||||||
stdDeviation="28.6433"
|
|
||||||
result="blur" /><feOffset
|
|
||||||
id="feOffset2070"
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
result="offset" /><feComposite
|
|
||||||
in2="fbSourceGraphic"
|
|
||||||
id="feComposite2072"
|
|
||||||
in="offset"
|
|
||||||
operator="atop"
|
|
||||||
result="fbSourceGraphic" /><feColorMatrix
|
|
||||||
result="fbSourceGraphicAlpha"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
|
||||||
id="feColorMatrix3393" /><feFlood
|
|
||||||
id="feFlood3395"
|
|
||||||
flood-opacity="0.352941"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
in="fbSourceGraphic" /><feComposite
|
|
||||||
in2="fbSourceGraphic"
|
|
||||||
id="feComposite3397"
|
|
||||||
in="flood"
|
|
||||||
operator="in"
|
|
||||||
result="composite1" /><feGaussianBlur
|
|
||||||
id="feGaussianBlur3399"
|
|
||||||
in="composite1"
|
|
||||||
stdDeviation="6.59891"
|
|
||||||
result="blur" /><feOffset
|
|
||||||
id="feOffset3401"
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
result="offset" /><feComposite
|
|
||||||
in2="offset"
|
|
||||||
id="feComposite3403"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
operator="over"
|
|
||||||
result="composite2" /></filter><linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient2809"
|
|
||||||
id="linearGradient5506"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(117.34662)"
|
|
||||||
x1="82.026001"
|
|
||||||
y1="144.832"
|
|
||||||
x2="82.026001"
|
|
||||||
y2="264.46201" /><radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient5535"
|
|
||||||
id="radialGradient5537"
|
|
||||||
cx="143.6935"
|
|
||||||
cy="143.69299"
|
|
||||||
fx="143.6935"
|
|
||||||
fy="143.69299"
|
|
||||||
r="152.72653"
|
|
||||||
gradientTransform="matrix(1,0,0,0.8506841,0,21.45565)"
|
|
||||||
gradientUnits="userSpaceOnUse" /></defs><circle
|
|
||||||
style="opacity:1;fill:#242832;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-dasharray:none;stroke-opacity:0.961795;filter:url(#filter2000)"
|
|
||||||
id="path1157"
|
|
||||||
cx="381.48901"
|
|
||||||
cy="381.48901"
|
|
||||||
inkscape:label="path1157"
|
|
||||||
r="235.79112"
|
|
||||||
sodipodi:insensitive="true" /><g
|
|
||||||
transform="matrix(0.319972,0,0,0.323174,379.08153,437.03375)"
|
|
||||||
id="g228"><g
|
|
||||||
style="opacity:1;fill:none;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none"
|
|
||||||
transform="matrix(3.89,0,0,3.89,-175.05,-175.05)"
|
|
||||||
id="g226" /></g><g
|
|
||||||
id="g236"
|
|
||||||
style="fill:none;filter:url(#inner-shadow-filter-0)"
|
|
||||||
transform="matrix(1.107829,0,0,1.106267,221.95533,199.03714)"><path
|
|
||||||
d="m 78.642332,155.437 v 98.42 c 0,5.867 4.741,10.605 10.605,10.605 5.854,0 10.604995,-4.738 10.604995,-10.605 v -98.42 c 0,-5.856 -4.750995,-10.605 -10.604995,-10.605 -5.864,0 -10.605,4.744 -10.605,10.605 z"
|
|
||||||
style="fill:none;fill-opacity:1;stroke:url(#gradient-4-1);stroke-width:9.80924px;stroke-linecap:round;stroke-linejoin:round"
|
|
||||||
id="path230" /><path
|
|
||||||
d="m 29.456,264.582 h 23.351 v -116.85 c 0.064,-0.56 0.166,-1.119 0.166,-1.693 0,-50.412 40.69,-91.42 90.698,-91.42 50.002,0 90.692,41.008 90.692,91.42 0,0.771 0.113,1.518 0.228,2.263 v 116.28 h 23.354 c 16.254,0 29.442,-13.64 29.442,-30.469 v -60.936 c 0,-13.878 -8.989,-25.57 -21.261,-29.249 C 264.997,76.957 210.518,22.804 143.676,22.804 76.816,22.804 22.329,76.962 21.211,143.954 8.956,147.638 0,159.32 0,173.187 v 60.926 c 0,16.819 13.187,30.469 29.456,30.469 z"
|
|
||||||
style="fill:url(#radialGradient5537);fill-opacity:1;stroke:url(#gradient-4-2);stroke-width:18.0661;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
|
||||||
id="path232" /><path
|
|
||||||
d="M 49.735541,279.35822 C 23.7214,267.48486 38.122112,248.62719 80.85964,237.45225 c 14.400662,-3.49216 25.08508,-5.12184 43.66659,-4.88901 11.61348,0.23282 24.62053,3.49216 24.62053,3.49216 0,-42.13877 -0.46471,-121.7601 -0.46471,-160.872338 4.6454,0 7.89719,-0.232827 14.40071,-0.232827 0,2.328107 0,4.190613 0,6.053093 0,2.095305 0,3.259358 0.46471,4.656212 4.6454,14.66709 11.14893,20.48736 43.66659,38.41381 41.34392,23.04827 53.42195,36.78411 53.42195,55.17616 -0.46471,17.22802 -30.65954,54.01213 -37.16306,52.61528 9.29075,-13.03741 22.2978,-27.00606 25.54958,-38.64661 4.18085,-14.20147 -7.43263,-34.2232 -26.01414,-44.69971 -14.86522,-8.8468 -50.17016,-16.52957 -59.92547,-16.52957 0,0 -0.46472,84.74317 -0.46472,116.87109 0,5.35464 -9.7553,14.89989 -15.32977,18.15925 -25.54958,15.36551 -75.25519,22.34984 -97.553043,12.33896 z"
|
|
||||||
id="path3079"
|
|
||||||
style="stroke-width:3.28861" /><path
|
|
||||||
d="m 188.76763,155.437 v 98.42 c 0,5.867 4.741,10.605 10.60501,10.605 5.854,0 10.605,-4.738 10.605,-10.605 v -98.42 c 0,-5.856 -4.751,-10.605 -10.605,-10.605 -5.86401,0 -10.60501,4.744 -10.60501,10.605 z"
|
|
||||||
style="fill:none;stroke:url(#linearGradient5506);stroke-width:9.80924px;stroke-linecap:round;stroke-linejoin:round"
|
|
||||||
id="path5502" /></g><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g240" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g242" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g244" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g246" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g248" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g250" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g252" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g254" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g256" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g258" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g260" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g262" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g264" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g266" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g268" /></svg>
|
|
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 359 KiB After Width: | Height: | Size: 351 KiB |
BIN
assets/spotube-nightly-item.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 39 KiB |
BIN
assets/spotube-nightly-logo-foreground.png
Normal file
After Width: | Height: | Size: 763 KiB |
190
assets/spotube-nightly-logo-foreground.svg
Normal file
After Width: | Height: | Size: 531 KiB |
Before Width: | Height: | Size: 128 KiB |
@ -1,359 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
viewBox="0 0 762 762"
|
|
||||||
version="1.1"
|
|
||||||
id="svg270"
|
|
||||||
sodipodi:docname="spotube-nightly-logo.svg"
|
|
||||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
|
||||||
xml:space="preserve"
|
|
||||||
inkscape:export-filename="spotube-logo.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
width="762"
|
|
||||||
height="762"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:bx="https://boxy-svg.com"><sodipodi:namedview
|
|
||||||
id="namedview272"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="0.26940768"
|
|
||||||
inkscape:cx="-413.87091"
|
|
||||||
inkscape:cy="562.34478"
|
|
||||||
inkscape:window-width="1518"
|
|
||||||
inkscape:window-height="1080"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
inkscape:current-layer="g236"
|
|
||||||
inkscape:lockguides="false"><inkscape:page
|
|
||||||
x="0"
|
|
||||||
y="0"
|
|
||||||
width="762"
|
|
||||||
height="762"
|
|
||||||
id="page3136" /><inkscape:page
|
|
||||||
x="640.44641"
|
|
||||||
y="132.29141"
|
|
||||||
width="89.999939"
|
|
||||||
height="89.999985"
|
|
||||||
id="page3138" /></sodipodi:namedview><defs
|
|
||||||
id="defs220"><linearGradient
|
|
||||||
id="linearGradient1211"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color:#ff4b4b;stop-opacity:1;"
|
|
||||||
id="stop1205" /><stop
|
|
||||||
offset="0.60799998"
|
|
||||||
style="stop-color:#d6a400;stop-opacity:1;"
|
|
||||||
id="stop1207" /><stop
|
|
||||||
offset="0.94400001"
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
id="stop1209" /></linearGradient><linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient5535"><stop
|
|
||||||
style="stop-color:#3b2100;stop-opacity:1;"
|
|
||||||
offset="0.25885531"
|
|
||||||
id="stop5531" /><stop
|
|
||||||
style="stop-color:#004256;stop-opacity:1;"
|
|
||||||
offset="1"
|
|
||||||
id="stop5533" /></linearGradient><linearGradient
|
|
||||||
id="linearGradient2809"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color:#ff4b4b;stop-opacity:1;"
|
|
||||||
id="stop2803" /><stop
|
|
||||||
offset="0.60799998"
|
|
||||||
style="stop-color:#d6a400;stop-opacity:1;"
|
|
||||||
id="stop2805" /><stop
|
|
||||||
offset="0.94400001"
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
id="stop2807" /></linearGradient><linearGradient
|
|
||||||
id="linearGradient938"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color:#ff4b4b;stop-opacity:1;"
|
|
||||||
id="stop932" /><stop
|
|
||||||
offset="0.60799998"
|
|
||||||
style="stop-color:#d6a400;stop-opacity:1;"
|
|
||||||
id="stop934" /><stop
|
|
||||||
offset="0.94400001"
|
|
||||||
style="stop-color:#fffcf1;stop-opacity:1;"
|
|
||||||
id="stop936" /></linearGradient><radialGradient
|
|
||||||
id="gradient-2-0"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
cx="251.179"
|
|
||||||
cy="248.821"
|
|
||||||
r="241.45"
|
|
||||||
gradientTransform="translate(-1.768285,0.589104)"
|
|
||||||
xlink:href="#gradient-2" /><linearGradient
|
|
||||||
id="gradient-2"><stop
|
|
||||||
offset="0.841"
|
|
||||||
style="stop-color: rgb(255, 255, 255);"
|
|
||||||
id="stop169" /><stop
|
|
||||||
offset="1"
|
|
||||||
style="stop-color: rgb(201, 201, 201);"
|
|
||||||
id="stop171" /></linearGradient><filter
|
|
||||||
id="drop-shadow-filter-0"
|
|
||||||
x="-0.050892502"
|
|
||||||
y="-0.050892502"
|
|
||||||
width="1.1017849"
|
|
||||||
height="1.1017849"
|
|
||||||
bx:preset="drop-shadow 1 0 0 10 0.42 rgba(201,201,201,1)"><feGaussianBlur
|
|
||||||
in="SourceAlpha"
|
|
||||||
stdDeviation="10"
|
|
||||||
id="feGaussianBlur174" /><feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
id="feOffset176" /><feComponentTransfer
|
|
||||||
result="offsetblur"
|
|
||||||
id="feComponentTransfer179"><feFuncA
|
|
||||||
id="spread-ctrl"
|
|
||||||
type="linear"
|
|
||||||
slope="0.84" /></feComponentTransfer><feFlood
|
|
||||||
flood-color="rgba(201,201,201,1)"
|
|
||||||
id="feFlood181" /><feComposite
|
|
||||||
in2="offsetblur"
|
|
||||||
operator="in"
|
|
||||||
id="feComposite183" /><feMerge
|
|
||||||
id="feMerge189"><feMergeNode
|
|
||||||
id="feMergeNode185" /><feMergeNode
|
|
||||||
in="SourceGraphic"
|
|
||||||
id="feMergeNode187" /></feMerge></filter><linearGradient
|
|
||||||
id="gradient-4-3"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="47.146"
|
|
||||||
y1="18.044001"
|
|
||||||
x2="47.146"
|
|
||||||
y2="75.353996"
|
|
||||||
xlink:href="#gradient-4" /><linearGradient
|
|
||||||
id="gradient-4"><stop
|
|
||||||
offset="0.113"
|
|
||||||
style="stop-color: rgb(83, 240, 111);"
|
|
||||||
id="stop193" /><stop
|
|
||||||
offset="0.608"
|
|
||||||
style="stop-color: rgb(0, 177, 86);"
|
|
||||||
id="stop195" /><stop
|
|
||||||
offset="0.944"
|
|
||||||
style="stop-color: rgb(2, 167, 156);"
|
|
||||||
id="stop197" /></linearGradient><filter
|
|
||||||
id="inner-shadow-filter-0"
|
|
||||||
x="-0.064836091"
|
|
||||||
y="-0.071329232"
|
|
||||||
width="1.1296722"
|
|
||||||
height="1.108079"
|
|
||||||
bx:preset="inner-shadow 1 0 0 4 0.5 rgba(0,0,0,0.7)"><feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
id="feOffset200" /><feGaussianBlur
|
|
||||||
stdDeviation="4"
|
|
||||||
id="feGaussianBlur202"
|
|
||||||
result="result1" /><feComposite
|
|
||||||
operator="out"
|
|
||||||
in="SourceGraphic"
|
|
||||||
in2="result1"
|
|
||||||
id="feComposite204" /><feComponentTransfer
|
|
||||||
result="choke"
|
|
||||||
id="feComponentTransfer208"><feFuncA
|
|
||||||
type="linear"
|
|
||||||
slope="1"
|
|
||||||
id="feFuncA206" /></feComponentTransfer><feFlood
|
|
||||||
flood-color="rgba(0,0,0,0.7)"
|
|
||||||
result="color"
|
|
||||||
id="feFlood210" /><feComposite
|
|
||||||
operator="in"
|
|
||||||
in="color"
|
|
||||||
in2="choke"
|
|
||||||
result="shadow"
|
|
||||||
id="feComposite212" /><feComposite
|
|
||||||
operator="over"
|
|
||||||
in="shadow"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
id="feComposite214" /></filter><linearGradient
|
|
||||||
id="gradient-4-1"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="82.026001"
|
|
||||||
y1="144.832"
|
|
||||||
x2="82.026001"
|
|
||||||
y2="264.46201"
|
|
||||||
xlink:href="#linearGradient2809"
|
|
||||||
gradientTransform="translate(7.2213312)" /><linearGradient
|
|
||||||
id="gradient-4-2"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="143.69299"
|
|
||||||
y1="22.804001"
|
|
||||||
x2="143.69299"
|
|
||||||
y2="264.582"
|
|
||||||
xlink:href="#linearGradient938" /><linearGradient
|
|
||||||
id="gradient-4-0"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
x1="205.862"
|
|
||||||
y1="146.28"
|
|
||||||
x2="205.862"
|
|
||||||
y2="265.91"
|
|
||||||
xlink:href="#gradient-4"
|
|
||||||
gradientTransform="translate(-7.2213312)" /><filter
|
|
||||||
style="color-interpolation-filters:sRGB"
|
|
||||||
inkscape:label="Drop Shadow"
|
|
||||||
id="filter2000"
|
|
||||||
x="-0.3425389"
|
|
||||||
y="-0.3425389"
|
|
||||||
width="1.6850778"
|
|
||||||
height="1.6850778"><feFlood
|
|
||||||
flood-opacity="1"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
id="feFlood1990" /><feComposite
|
|
||||||
in="flood"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="out"
|
|
||||||
result="composite1"
|
|
||||||
id="feComposite1992" /><feGaussianBlur
|
|
||||||
in="composite1"
|
|
||||||
stdDeviation="29.980818"
|
|
||||||
result="blur"
|
|
||||||
id="feGaussianBlur1994" /><feOffset
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
result="offset"
|
|
||||||
id="feOffset1996" /><feComposite
|
|
||||||
in="offset"
|
|
||||||
in2="SourceGraphic"
|
|
||||||
operator="atop"
|
|
||||||
result="fbSourceGraphic"
|
|
||||||
id="feComposite1998" /><feColorMatrix
|
|
||||||
result="fbSourceGraphicAlpha"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
|
||||||
id="feColorMatrix2062" /><feFlood
|
|
||||||
id="feFlood2064"
|
|
||||||
flood-opacity="1"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
in="fbSourceGraphic" /><feComposite
|
|
||||||
in2="fbSourceGraphic"
|
|
||||||
id="feComposite2066"
|
|
||||||
in="flood"
|
|
||||||
operator="out"
|
|
||||||
result="composite1" /><feGaussianBlur
|
|
||||||
id="feGaussianBlur2068"
|
|
||||||
in="composite1"
|
|
||||||
stdDeviation="28.6433"
|
|
||||||
result="blur" /><feOffset
|
|
||||||
id="feOffset2070"
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
result="offset" /><feComposite
|
|
||||||
in2="fbSourceGraphic"
|
|
||||||
id="feComposite2072"
|
|
||||||
in="offset"
|
|
||||||
operator="atop"
|
|
||||||
result="fbSourceGraphic" /><feColorMatrix
|
|
||||||
result="fbSourceGraphicAlpha"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
|
||||||
id="feColorMatrix3393" /><feFlood
|
|
||||||
id="feFlood3395"
|
|
||||||
flood-opacity="0.352941"
|
|
||||||
flood-color="rgb(0,0,0)"
|
|
||||||
result="flood"
|
|
||||||
in="fbSourceGraphic" /><feComposite
|
|
||||||
in2="fbSourceGraphic"
|
|
||||||
id="feComposite3397"
|
|
||||||
in="flood"
|
|
||||||
operator="in"
|
|
||||||
result="composite1" /><feGaussianBlur
|
|
||||||
id="feGaussianBlur3399"
|
|
||||||
in="composite1"
|
|
||||||
stdDeviation="6.59891"
|
|
||||||
result="blur" /><feOffset
|
|
||||||
id="feOffset3401"
|
|
||||||
dx="0"
|
|
||||||
dy="0"
|
|
||||||
result="offset" /><feComposite
|
|
||||||
in2="offset"
|
|
||||||
id="feComposite3403"
|
|
||||||
in="fbSourceGraphic"
|
|
||||||
operator="over"
|
|
||||||
result="composite2" /></filter><linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient1211"
|
|
||||||
id="linearGradient5506"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="translate(117.34662)"
|
|
||||||
x1="82.026001"
|
|
||||||
y1="144.832"
|
|
||||||
x2="82.026001"
|
|
||||||
y2="264.46201" /><radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient5535"
|
|
||||||
id="radialGradient5537"
|
|
||||||
cx="143.6935"
|
|
||||||
cy="143.69299"
|
|
||||||
fx="143.6935"
|
|
||||||
fy="143.69299"
|
|
||||||
r="152.72653"
|
|
||||||
gradientTransform="matrix(1,0,0,0.8506841,0,21.45565)"
|
|
||||||
gradientUnits="userSpaceOnUse" /></defs><circle
|
|
||||||
style="opacity:1;fill:#242832;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-dasharray:none;stroke-opacity:0.961795;filter:url(#filter2000)"
|
|
||||||
id="path1157"
|
|
||||||
cx="381.48901"
|
|
||||||
cy="381.48901"
|
|
||||||
inkscape:label="path1157"
|
|
||||||
r="235.79112"
|
|
||||||
sodipodi:insensitive="true" /><g
|
|
||||||
transform="matrix(0.319972,0,0,0.323174,379.08153,437.03375)"
|
|
||||||
id="g228"><g
|
|
||||||
style="opacity:1;fill:none;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none"
|
|
||||||
transform="matrix(3.89,0,0,3.89,-175.05,-175.05)"
|
|
||||||
id="g226" /></g><g
|
|
||||||
id="g236"
|
|
||||||
style="fill:none;filter:url(#inner-shadow-filter-0)"
|
|
||||||
transform="matrix(1.107829,0,0,1.106267,221.95533,199.03714)"><path
|
|
||||||
d="m 78.642332,155.437 v 98.42 c 0,5.867 4.741,10.605 10.605,10.605 5.854,0 10.604995,-4.738 10.604995,-10.605 v -98.42 c 0,-5.856 -4.750995,-10.605 -10.604995,-10.605 -5.864,0 -10.605,4.744 -10.605,10.605 z"
|
|
||||||
style="fill:none;fill-opacity:1;stroke:url(#gradient-4-1);stroke-width:9.80924px;stroke-linecap:round;stroke-linejoin:round"
|
|
||||||
id="path230" /><path
|
|
||||||
d="m 29.456,264.582 h 23.351 v -116.85 c 0.064,-0.56 0.166,-1.119 0.166,-1.693 0,-50.412 40.69,-91.42 90.698,-91.42 50.002,0 90.692,41.008 90.692,91.42 0,0.771 0.113,1.518 0.228,2.263 v 116.28 h 23.354 c 16.254,0 29.442,-13.64 29.442,-30.469 v -60.936 c 0,-13.878 -8.989,-25.57 -21.261,-29.249 C 264.997,76.957 210.518,22.804 143.676,22.804 76.816,22.804 22.329,76.962 21.211,143.954 8.956,147.638 0,159.32 0,173.187 v 60.926 c 0,16.819 13.187,30.469 29.456,30.469 z"
|
|
||||||
style="fill:url(#radialGradient5537);fill-opacity:1;stroke:url(#gradient-4-2);stroke-width:18.0661;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
|
||||||
id="path232" /><path
|
|
||||||
d="M 49.735541,279.35822 C 23.7214,267.48486 38.122112,248.62719 80.85964,237.45225 c 14.400662,-3.49216 25.08508,-5.12184 43.66659,-4.88901 11.61348,0.23282 24.62053,3.49216 24.62053,3.49216 0,-42.13877 -0.46471,-121.7601 -0.46471,-160.872338 4.6454,0 7.89719,-0.232827 14.40071,-0.232827 0,2.328107 0,4.190613 0,6.053093 0,2.095305 0,3.259358 0.46471,4.656212 4.6454,14.66709 11.14893,20.48736 43.66659,38.41381 41.34392,23.04827 53.42195,36.78411 53.42195,55.17616 -0.46471,17.22802 -30.65954,54.01213 -37.16306,52.61528 9.29075,-13.03741 22.2978,-27.00606 25.54958,-38.64661 4.18085,-14.20147 -7.43263,-34.2232 -26.01414,-44.69971 -14.86522,-8.8468 -50.17016,-16.52957 -59.92547,-16.52957 0,0 -0.46472,84.74317 -0.46472,116.87109 0,5.35464 -9.7553,14.89989 -15.32977,18.15925 -25.54958,15.36551 -75.25519,22.34984 -97.553043,12.33896 z"
|
|
||||||
id="path3079"
|
|
||||||
style="stroke-width:3.28861" /><path
|
|
||||||
d="m 188.76763,155.437 v 98.42 c 0,5.867 4.741,10.605 10.60501,10.605 5.854,0 10.605,-4.738 10.605,-10.605 v -98.42 c 0,-5.856 -4.751,-10.605 -10.605,-10.605 -5.86401,0 -10.60501,4.744 -10.60501,10.605 z"
|
|
||||||
style="fill:none;stroke:url(#linearGradient5506);stroke-width:9.80924px;stroke-linecap:round;stroke-linejoin:round"
|
|
||||||
id="path5502" /></g><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g240" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g242" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g244" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g246" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g248" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g250" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g252" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g254" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g256" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g258" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g260" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g262" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g264" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g266" /><g
|
|
||||||
transform="matrix(0.972684,0,0,0.972684,193.06382,142.14148)"
|
|
||||||
id="g268" /></svg>
|
|
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 295 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 298 KiB |
1
drift_schemas/app_db/drift_schema_v5.json
Normal file
@ -62,7 +62,7 @@ class AppDatabase extends _$AppDatabase {
|
|||||||
AppDatabase() : super(_openConnection());
|
AppDatabase() : super(_openConnection());
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get schemaVersion => 4;
|
int get schemaVersion => 5;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
MigrationStrategy get migration {
|
MigrationStrategy get migration {
|
||||||
@ -87,6 +87,33 @@ class AppDatabase extends _$AppDatabase {
|
|||||||
schema.preferencesTable.youtubeClientEngine,
|
schema.preferencesTable.youtubeClientEngine,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
from4To5: (m, schema) async {
|
||||||
|
final columnName = schema.preferencesTable.accentColorScheme
|
||||||
|
.escapedNameFor(SqlDialect.sqlite);
|
||||||
|
final columnNameOld =
|
||||||
|
'"${schema.preferencesTable.accentColorScheme.name}_old"';
|
||||||
|
final tableName = schema.preferencesTable.actualTableName;
|
||||||
|
await customStatement(
|
||||||
|
"ALTER TABLE $tableName "
|
||||||
|
"RENAME COLUMN $columnName to $columnNameOld",
|
||||||
|
);
|
||||||
|
await customStatement(
|
||||||
|
"ALTER TABLE $tableName "
|
||||||
|
"ADD COLUMN $columnName TEXT NOT NULL DEFAULT 'Orange:0xFFf97315'",
|
||||||
|
);
|
||||||
|
await customStatement(
|
||||||
|
"UPDATE $tableName "
|
||||||
|
"SET $columnName = $columnNameOld",
|
||||||
|
);
|
||||||
|
await customStatement(
|
||||||
|
"ALTER TABLE $tableName "
|
||||||
|
"DROP COLUMN $columnNameOld",
|
||||||
|
);
|
||||||
|
await customStatement(
|
||||||
|
"UPDATE $tableName "
|
||||||
|
"SET $columnName = 'Orange:0xFFf97315' WHERE $columnName = 'Blue:0xFF2196F3'",
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -666,7 +666,7 @@ class $PreferencesTableTable extends PreferencesTable
|
|||||||
'accent_color_scheme', aliasedName, false,
|
'accent_color_scheme', aliasedName, false,
|
||||||
type: DriftSqlType.string,
|
type: DriftSqlType.string,
|
||||||
requiredDuringInsert: false,
|
requiredDuringInsert: false,
|
||||||
defaultValue: const Constant("Blue:0xFF2196F3"))
|
defaultValue: const Constant("Orange:0xFFf97315"))
|
||||||
.withConverter<SpotubeColor>(
|
.withConverter<SpotubeColor>(
|
||||||
$PreferencesTableTable.$converteraccentColorScheme);
|
$PreferencesTableTable.$converteraccentColorScheme);
|
||||||
static const VerificationMeta _layoutModeMeta =
|
static const VerificationMeta _layoutModeMeta =
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
import 'package:drift/internal/versioned_schema.dart' as i0;
|
import 'package:drift/internal/versioned_schema.dart' as i0;
|
||||||
import 'package:drift/drift.dart' as i1;
|
import 'package:drift/drift.dart' as i1;
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:shadcn_flutter/shadcn_flutter.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/models/database/database.dart';
|
import 'package:spotube/models/database/database.dart';
|
||||||
import 'package:spotube/services/sourced_track/enums.dart'; // ignore_for_file: type=lint,unused_import
|
import 'package:spotube/services/sourced_track/enums.dart'; // ignore_for_file: type=lint,unused_import
|
||||||
@ -1188,10 +1188,232 @@ i1.GeneratedColumn<String> _column_54(String aliasedName) =>
|
|||||||
i1.GeneratedColumn<String>('youtube_client_engine', aliasedName, false,
|
i1.GeneratedColumn<String>('youtube_client_engine', aliasedName, false,
|
||||||
type: i1.DriftSqlType.string,
|
type: i1.DriftSqlType.string,
|
||||||
defaultValue: Constant(YoutubeClientEngine.youtubeExplode.name));
|
defaultValue: Constant(YoutubeClientEngine.youtubeExplode.name));
|
||||||
|
|
||||||
|
final class Schema5 extends i0.VersionedSchema {
|
||||||
|
Schema5({required super.database}) : super(version: 5);
|
||||||
|
@override
|
||||||
|
late final List<i1.DatabaseSchemaEntity> entities = [
|
||||||
|
authenticationTable,
|
||||||
|
blacklistTable,
|
||||||
|
preferencesTable,
|
||||||
|
scrobblerTable,
|
||||||
|
skipSegmentTable,
|
||||||
|
sourceMatchTable,
|
||||||
|
audioPlayerStateTable,
|
||||||
|
playlistTable,
|
||||||
|
playlistMediaTable,
|
||||||
|
historyTable,
|
||||||
|
lyricsTable,
|
||||||
|
uniqueBlacklist,
|
||||||
|
uniqTrackMatch,
|
||||||
|
];
|
||||||
|
late final Shape0 authenticationTable = Shape0(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'authentication_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_1,
|
||||||
|
_column_2,
|
||||||
|
_column_3,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape1 blacklistTable = Shape1(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'blacklist_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_4,
|
||||||
|
_column_5,
|
||||||
|
_column_6,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape12 preferencesTable = Shape12(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'preferences_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_7,
|
||||||
|
_column_8,
|
||||||
|
_column_9,
|
||||||
|
_column_10,
|
||||||
|
_column_11,
|
||||||
|
_column_12,
|
||||||
|
_column_13,
|
||||||
|
_column_14,
|
||||||
|
_column_15,
|
||||||
|
_column_55,
|
||||||
|
_column_17,
|
||||||
|
_column_18,
|
||||||
|
_column_19,
|
||||||
|
_column_20,
|
||||||
|
_column_21,
|
||||||
|
_column_22,
|
||||||
|
_column_23,
|
||||||
|
_column_24,
|
||||||
|
_column_25,
|
||||||
|
_column_26,
|
||||||
|
_column_54,
|
||||||
|
_column_27,
|
||||||
|
_column_28,
|
||||||
|
_column_29,
|
||||||
|
_column_30,
|
||||||
|
_column_31,
|
||||||
|
_column_53,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape3 scrobblerTable = Shape3(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'scrobbler_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_32,
|
||||||
|
_column_33,
|
||||||
|
_column_34,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape4 skipSegmentTable = Shape4(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'skip_segment_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_35,
|
||||||
|
_column_36,
|
||||||
|
_column_37,
|
||||||
|
_column_32,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape5 sourceMatchTable = Shape5(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'source_match_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_37,
|
||||||
|
_column_38,
|
||||||
|
_column_39,
|
||||||
|
_column_32,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape6 audioPlayerStateTable = Shape6(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'audio_player_state_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_40,
|
||||||
|
_column_41,
|
||||||
|
_column_42,
|
||||||
|
_column_43,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape7 playlistTable = Shape7(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'playlist_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_44,
|
||||||
|
_column_45,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape8 playlistMediaTable = Shape8(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'playlist_media_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_46,
|
||||||
|
_column_47,
|
||||||
|
_column_48,
|
||||||
|
_column_49,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape9 historyTable = Shape9(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'history_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_32,
|
||||||
|
_column_50,
|
||||||
|
_column_51,
|
||||||
|
_column_52,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
late final Shape10 lyricsTable = Shape10(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'lyrics_table',
|
||||||
|
withoutRowId: false,
|
||||||
|
isStrict: false,
|
||||||
|
tableConstraints: [],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_37,
|
||||||
|
_column_52,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null);
|
||||||
|
final i1.Index uniqueBlacklist = i1.Index('unique_blacklist',
|
||||||
|
'CREATE UNIQUE INDEX unique_blacklist ON blacklist_table (element_type, element_id)');
|
||||||
|
final i1.Index uniqTrackMatch = i1.Index('uniq_track_match',
|
||||||
|
'CREATE UNIQUE INDEX uniq_track_match ON source_match_table (track_id, source_id, source_type)');
|
||||||
|
}
|
||||||
|
|
||||||
|
i1.GeneratedColumn<String> _column_55(String aliasedName) =>
|
||||||
|
i1.GeneratedColumn<String>('accent_color_scheme', aliasedName, false,
|
||||||
|
type: i1.DriftSqlType.string,
|
||||||
|
defaultValue: const Constant("Orange:0xFFf97315"));
|
||||||
i0.MigrationStepWithVersion migrationSteps({
|
i0.MigrationStepWithVersion migrationSteps({
|
||||||
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
|
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
|
||||||
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
|
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
|
||||||
required Future<void> Function(i1.Migrator m, Schema4 schema) from3To4,
|
required Future<void> Function(i1.Migrator m, Schema4 schema) from3To4,
|
||||||
|
required Future<void> Function(i1.Migrator m, Schema5 schema) from4To5,
|
||||||
}) {
|
}) {
|
||||||
return (currentVersion, database) async {
|
return (currentVersion, database) async {
|
||||||
switch (currentVersion) {
|
switch (currentVersion) {
|
||||||
@ -1210,6 +1432,11 @@ i0.MigrationStepWithVersion migrationSteps({
|
|||||||
final migrator = i1.Migrator(database, schema);
|
final migrator = i1.Migrator(database, schema);
|
||||||
await from3To4(migrator, schema);
|
await from3To4(migrator, schema);
|
||||||
return 4;
|
return 4;
|
||||||
|
case 4:
|
||||||
|
final schema = Schema5(database: database);
|
||||||
|
final migrator = i1.Migrator(database, schema);
|
||||||
|
await from4To5(migrator, schema);
|
||||||
|
return 5;
|
||||||
default:
|
default:
|
||||||
throw ArgumentError.value('Unknown migration from $currentVersion');
|
throw ArgumentError.value('Unknown migration from $currentVersion');
|
||||||
}
|
}
|
||||||
@ -1220,10 +1447,12 @@ i1.OnUpgrade stepByStep({
|
|||||||
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
|
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
|
||||||
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
|
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
|
||||||
required Future<void> Function(i1.Migrator m, Schema4 schema) from3To4,
|
required Future<void> Function(i1.Migrator m, Schema4 schema) from3To4,
|
||||||
|
required Future<void> Function(i1.Migrator m, Schema5 schema) from4To5,
|
||||||
}) =>
|
}) =>
|
||||||
i0.VersionedSchema.stepByStepHelper(
|
i0.VersionedSchema.stepByStepHelper(
|
||||||
step: migrationSteps(
|
step: migrationSteps(
|
||||||
from1To2: from1To2,
|
from1To2: from1To2,
|
||||||
from2To3: from2To3,
|
from2To3: from2To3,
|
||||||
from3To4: from3To4,
|
from3To4: from3To4,
|
||||||
|
from4To5: from4To5,
|
||||||
));
|
));
|
||||||
|
@ -79,7 +79,7 @@ class PreferencesTable extends Table {
|
|||||||
TextColumn get closeBehavior => textEnum<CloseBehavior>()
|
TextColumn get closeBehavior => textEnum<CloseBehavior>()
|
||||||
.withDefault(Constant(CloseBehavior.close.name))();
|
.withDefault(Constant(CloseBehavior.close.name))();
|
||||||
TextColumn get accentColorScheme => text()
|
TextColumn get accentColorScheme => text()
|
||||||
.withDefault(const Constant("Blue:0xFF2196F3"))
|
.withDefault(const Constant("Orange:0xFFf97315"))
|
||||||
.map(const SpotubeColorConverter())();
|
.map(const SpotubeColorConverter())();
|
||||||
TextColumn get layoutMode =>
|
TextColumn get layoutMode =>
|
||||||
textEnum<LayoutMode>().withDefault(Constant(LayoutMode.adaptive.name))();
|
textEnum<LayoutMode>().withDefault(Constant(LayoutMode.adaptive.name))();
|
||||||
@ -130,7 +130,7 @@ class PreferencesTable extends Table {
|
|||||||
systemTitleBar: false,
|
systemTitleBar: false,
|
||||||
skipNonMusic: false,
|
skipNonMusic: false,
|
||||||
closeBehavior: CloseBehavior.close,
|
closeBehavior: CloseBehavior.close,
|
||||||
accentColorScheme: SpotubeColor(Colors.blue.value, name: "Blue"),
|
accentColorScheme: SpotubeColor(Colors.orange.value, name: "Orange"),
|
||||||
layoutMode: LayoutMode.adaptive,
|
layoutMode: LayoutMode.adaptive,
|
||||||
locale: const Locale("system", "system"),
|
locale: const Locale("system", "system"),
|
||||||
market: Market.US,
|
market: Market.US,
|
||||||
|
@ -90,9 +90,9 @@ class UserPreferencesNotifier extends Notifier<PreferencesTableData> {
|
|||||||
Future<void> reset() async {
|
Future<void> reset() async {
|
||||||
final db = ref.read(databaseProvider);
|
final db = ref.read(databaseProvider);
|
||||||
|
|
||||||
final query = db.update(db.preferencesTable)..where((t) => t.id.equals(0));
|
final query = db.update(db.preferencesTable);
|
||||||
|
|
||||||
await query.replace(PreferencesTableCompanion.insert());
|
await query.replace(PreferencesTableCompanion.insert(id: const Value(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<String> getMusicCacheDir() async {
|
static Future<String> getMusicCacheDir() async {
|
||||||
|
@ -3,27 +3,30 @@
|
|||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:drift/internal/migrations.dart';
|
import 'package:drift/internal/migrations.dart';
|
||||||
import 'schema_v4.dart' as v4;
|
|
||||||
import 'schema_v3.dart' as v3;
|
import 'schema_v3.dart' as v3;
|
||||||
import 'schema_v2.dart' as v2;
|
import 'schema_v5.dart' as v5;
|
||||||
import 'schema_v1.dart' as v1;
|
import 'schema_v1.dart' as v1;
|
||||||
|
import 'schema_v2.dart' as v2;
|
||||||
|
import 'schema_v4.dart' as v4;
|
||||||
|
|
||||||
class GeneratedHelper implements SchemaInstantiationHelper {
|
class GeneratedHelper implements SchemaInstantiationHelper {
|
||||||
@override
|
@override
|
||||||
GeneratedDatabase databaseForVersion(QueryExecutor db, int version) {
|
GeneratedDatabase databaseForVersion(QueryExecutor db, int version) {
|
||||||
switch (version) {
|
switch (version) {
|
||||||
case 4:
|
|
||||||
return v4.DatabaseAtV4(db);
|
|
||||||
case 3:
|
case 3:
|
||||||
return v3.DatabaseAtV3(db);
|
return v3.DatabaseAtV3(db);
|
||||||
case 2:
|
case 5:
|
||||||
return v2.DatabaseAtV2(db);
|
return v5.DatabaseAtV5(db);
|
||||||
case 1:
|
case 1:
|
||||||
return v1.DatabaseAtV1(db);
|
return v1.DatabaseAtV1(db);
|
||||||
|
case 2:
|
||||||
|
return v2.DatabaseAtV2(db);
|
||||||
|
case 4:
|
||||||
|
return v4.DatabaseAtV4(db);
|
||||||
default:
|
default:
|
||||||
throw MissingSchemaException(version, versions);
|
throw MissingSchemaException(version, versions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const versions = const [1, 2, 3, 4];
|
static const versions = const [1, 2, 3, 4, 5];
|
||||||
}
|
}
|
||||||
|