Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ncspot for openSUSE:Factory checked in at 2022-05-02 16:25:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ncspot (Old) and /work/SRC/openSUSE:Factory/.ncspot.new.1538 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ncspot" Mon May 2 16:25:01 2022 rev:2 rq:974219 version:0.9.8 Changes: -------- --- /work/SRC/openSUSE:Factory/ncspot/ncspot.changes 2022-04-08 00:29:13.373307085 +0200 +++ /work/SRC/openSUSE:Factory/.ncspot.new.1538/ncspot.changes 2022-05-02 16:25:13.620815353 +0200 @@ -1,0 +2,19 @@ +Sun May 1 20:48:16 UTC 2022 - Jan-Luca Kiok <[email protected]> + +- Update to version 0.9.8 + Maintenance + * Disable compat feature in futures + * Remove webbrowser crate + * Only download cover image when flag enabled + * Fix: do not crash DBus on invalid Spotify URIs + Features + * Add playback_state config option + * Add option to play track from context menu dialog +- Do not strip binary via Cargo + +------------------------------------------------------------------- +Thu Apr 7 17:58:37 UTC 2022 - Jan-Luca Kiok <[email protected]> + +- Format spec file via osc service + +------------------------------------------------------------------- Old: ---- ncspot-0.9.7.tar.gz New: ---- ncspot-0.9.8.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ncspot.spec ++++++ --- /var/tmp/diff_new_pack.o91kqi/_old 2022-05-02 16:25:14.984816869 +0200 +++ /var/tmp/diff_new_pack.o91kqi/_new 2022-05-02 16:25:14.988816874 +0200 @@ -1,6 +1,7 @@ # # spec file for package ncspot # +# Copyright (c) 2022 SUSE LLC # Copyright (c) 2021, Martin Hauke <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -17,7 +18,7 @@ Name: ncspot -Version: 0.9.7 +Version: 0.9.8 Release: 0 Summary: Ncurses Spotify client License: BSD-2-Clause @@ -27,13 +28,13 @@ Source1: vendor.tar.xz Source2: cargo_config BuildRequires: cargo >= 1.58 +BuildRequires: libpulse-devel +BuildRequires: libxcb-devel +BuildRequires: ncurses5-devel +BuildRequires: openssl-devel BuildRequires: pkgconfig BuildRequires: rust BuildRequires: pkgconfig(dbus-1) >= 1.6 -BuildRequires: ncurses5-devel -BuildRequires: openssl-devel -BuildRequires: libpulse-devel -BuildRequires: libxcb-devel %description Cross-platform ncurses Spotify client written in Rust, inspired ++++++ _service ++++++ --- /var/tmp/diff_new_pack.o91kqi/_old 2022-05-02 16:25:15.016816905 +0200 +++ /var/tmp/diff_new_pack.o91kqi/_new 2022-05-02 16:25:15.020816909 +0200 @@ -1,6 +1,6 @@ <services> <service name="cargo_vendor" mode="disabled"> - <param name="srcdir">ncspot-0.9.7</param> + <param name="srcdir">ncspot-0.9.8</param> </service> </services> ++++++ cargo_config ++++++ --- /var/tmp/diff_new_pack.o91kqi/_old 2022-05-02 16:25:15.036816927 +0200 +++ /var/tmp/diff_new_pack.o91kqi/_new 2022-05-02 16:25:15.040816932 +0200 @@ -3,7 +3,5 @@ [source.vendored-sources] directory = "vendor" - -[profile.release] -strip = "symbols" +(No newline at EOF) ++++++ ncspot-0.9.7.tar.gz -> ncspot-0.9.8.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/Cargo.lock new/ncspot-0.9.8/Cargo.lock --- old/ncspot-0.9.7/Cargo.lock 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/Cargo.lock 2022-04-30 22:43:01.000000000 +0200 @@ -101,9 +101,9 @@ [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" dependencies = [ "proc-macro2", "quote", @@ -129,9 +129,9 @@ [[package]] name = "base-x" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74" [[package]] name = "base64" @@ -141,9 +141,9 @@ [[package]] name = "bindgen" -version = "0.56.0" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" dependencies = [ "bitflags", "cexpr", @@ -229,11 +229,11 @@ [[package]] name = "cexpr" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "nom 5.1.2", + "nom", ] [[package]] @@ -285,20 +285,29 @@ [[package]] name = "clap" -version = "3.1.6" +version = "3.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c93436c21e4698bacadf42917db28b23017027a4deccb35dbe47a7e7840123" +checksum = "c4b3ee449efa0c4f95cd48b00539829d3655a98e189a90617246492788d22404" dependencies = [ "atty", "bitflags", + "clap_lex", "indexmap", - "os_str_bytes", "strsim", "termcolor", "textwrap", ] [[package]] +name = "clap_lex" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" +dependencies = [ + "os_str_bytes", +] + +[[package]] name = "clipboard" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -322,9 +331,9 @@ [[package]] name = "combine" -version = "4.6.3" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062" +checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" dependencies = [ "bytes", "memchr", @@ -398,9 +407,9 @@ [[package]] name = "coreaudio-sys" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4679a59dbd8c15f064c012dfe8c1163b9453224238b59bb9328c142b8b248b" +checksum = "3dff444d80630d7073077d38d40b4501fd518bd2b922c2a55edcc8b0f7be57e6" dependencies = [ "bindgen", ] @@ -490,9 +499,9 @@ [[package]] name = "cursive" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca536d245342f6c005e7547ab640e444a3dc2fc0319a92124c8c1cbff025e775" +checksum = "cfaeae1b6ebac028126197b63a4df82d70833ea724f279e236eaf94d28edcd9c" dependencies = [ "ahash", "cfg-if", @@ -512,9 +521,9 @@ [[package]] name = "cursive_core" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27fbda42833e46148ff28db338f6189a4407e4a38ba1f4105e2f623089e66a0" +checksum = "ec401760420b5a74f0bcbbbcbd6d5e02e766d3a20ba542aaa05eae1a61212daf" dependencies = [ "ahash", "crossbeam-channel", @@ -532,9 +541,9 @@ [[package]] name = "darling" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" dependencies = [ "darling_core", "darling_macro", @@ -542,9 +551,9 @@ [[package]] name = "darling_core" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", @@ -556,9 +565,9 @@ [[package]] name = "darling_macro" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", "quote", @@ -673,18 +682,18 @@ [[package]] name = "encoding_rs" -version = "0.8.30" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ "cfg-if", ] [[package]] name = "enum-map" -version = "2.0.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82605a2a3d13a9661b07ba27f39d00496aa347c9c236b1a3b8201c1b6d761408" +checksum = "0348b2a57c82f98b9dbd8098b1abb2416f221823d3e50cbe24eaebdd16896826" dependencies = [ "enum-map-derive", ] @@ -702,18 +711,18 @@ [[package]] name = "enumset" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6216d2c19a6fb5f29d1ada1dc7bc4367a8cbf0fa4af5cf12e07b5bbdde6b5b2c" +checksum = "4799cdb24d48f1f8a7a98d06b7fde65a85a2d1e42b25a889f5406aa1fbefe074" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6451128aa6655d880755345d085494cf7561a6bee7c8dc821e5d77e6d267ecd4" +checksum = "ea83a3fbdc1d999ccfbcbee717eab36f8edf2d71693a23ce0d7cca19e085304c" dependencies = [ "darling", "proc-macro2", @@ -732,9 +741,9 @@ [[package]] name = "fern" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9a4820f0ccc8a7afd67c39a0f1a0f4b07ca1725164271a64939d7aeb9af065" +checksum = "3bdd7b0849075e79ee9a1836df22c717d1eba30451796fdc631b04565dd11e2a" dependencies = [ "log", ] @@ -778,12 +787,6 @@ [[package]] name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - -[[package]] -name = "futures" version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" @@ -859,7 +862,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -884,9 +886,9 @@ [[package]] name = "getrandom" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if", "libc", @@ -901,9 +903,9 @@ [[package]] name = "h2" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62eeb471aa3e3c9197aa4bfeabfe02982f6dc96f750486c0bb0009ac58b26d2b" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" dependencies = [ "bytes", "fnv", @@ -914,7 +916,7 @@ "indexmap", "slab", "tokio", - "tokio-util", + "tokio-util 0.7.1", "tracing", ] @@ -991,9 +993,9 @@ [[package]] name = "http" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "ff8670570af52249509a86f5e3e18a08c60b177071826898fde8997cf5f6bfbb" dependencies = [ "bytes", "fnv", @@ -1013,9 +1015,9 @@ [[package]] name = "httparse" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" @@ -1054,7 +1056,7 @@ checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" dependencies = [ "bytes", - "futures 0.3.21", + "futures", "headers", "http", "hyper", @@ -1094,9 +1096,9 @@ [[package]] name = "indexmap" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" dependencies = [ "autocfg", "hashbrown", @@ -1122,9 +1124,9 @@ [[package]] name = "ipnet" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "itoa" @@ -1163,9 +1165,9 @@ [[package]] name = "js-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" dependencies = [ "wasm-bindgen", ] @@ -1195,9 +1197,9 @@ [[package]] name = "libc" -version = "0.2.121" +version = "0.2.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f" +checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b" [[package]] name = "libdbus-sys" @@ -1323,7 +1325,7 @@ "thiserror", "tokio", "tokio-stream", - "tokio-util", + "tokio-util 0.6.9", "url", "uuid", "vergen", @@ -1385,10 +1387,11 @@ [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ + "autocfg", "scopeguard", ] @@ -1457,9 +1460,9 @@ [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" @@ -1507,9 +1510,9 @@ [[package]] name = "native-tls" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" dependencies = [ "lazy_static", "libc", @@ -1525,7 +1528,7 @@ [[package]] name = "ncspot" -version = "0.9.7" +version = "0.9.8" dependencies = [ "chrono", "clap", @@ -1535,7 +1538,7 @@ "dbus", "dbus-tree", "fern", - "futures 0.3.21", + "futures", "ioctl-rs", "lazy_static", "libc", @@ -1561,7 +1564,6 @@ "toml", "unicode-width", "url", - "webbrowser", "wl-clipboard-rs", ] @@ -1591,15 +1593,15 @@ [[package]] name = "ndk-context" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5cc68637e21fe8f077f6a1c9e0b9ca495bb74895226b476310f613325884" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-glue" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ffb7443daba48349d545028777ca98853b018b4c16624aa01223bc29e078da" +checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f" dependencies = [ "lazy_static", "libc", @@ -1672,16 +1674,6 @@ [[package]] name = "nom" -version = "5.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" -dependencies = [ - "memchr", - "version_check", -] - -[[package]] -name = "nom" version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" @@ -1692,9 +1684,9 @@ [[package]] name = "notify-rust" -version = "4.5.7" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d5a39621dc5b944ac28461faef99236d428240c4855d251adbb029a7d2e2af8" +checksum = "a995a3d2834cefa389218e7a35156e8ce544bc95f836900da01ee0b26a07e9d4" dependencies = [ "dbus", "mac-notification-sys", @@ -1730,7 +1722,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" dependencies = [ - "num-complex 0.4.0", + "num-complex 0.4.1", "num-integer", "num-iter", "num-rational 0.4.0", @@ -1772,9 +1764,9 @@ [[package]] name = "num-complex" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" +checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790" dependencies = [ "num-traits", ] @@ -1792,9 +1784,9 @@ [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", @@ -1802,9 +1794,9 @@ [[package]] name = "num-iter" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg", "num-integer", @@ -1921,13 +1913,13 @@ [[package]] name = "oboe" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2463c8f2e19b4e0d0710a21f8e4011501ff28db1c95d7a5482a553b2100502d2" +checksum = "27f63c358b4fa0fbcfefd7c8be5cfc39c08ce2389f5325687e7762a48d30a5c1" dependencies = [ "jni", "ndk", - "ndk-glue", + "ndk-context", "num-derive", "num-traits", "oboe-sys", @@ -2011,9 +2003,6 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] [[package]] name = "owning_ref" @@ -2117,9 +2106,9 @@ [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -2129,9 +2118,9 @@ [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "platform-dirs" @@ -2197,9 +2186,9 @@ [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" dependencies = [ "unicode-xid", ] @@ -2249,9 +2238,9 @@ [[package]] name = "quote" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af2ec4714533fcdf07e886f17025ace8b997b9ce51204ee69b6da831c3da57" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" dependencies = [ "proc-macro2", ] @@ -2298,9 +2287,9 @@ [[package]] name = "redox_syscall" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ "bitflags", ] @@ -2316,9 +2305,9 @@ [[package]] name = "redox_users" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7776223e2696f1aa4c6b0170e83212f47296a00424305117d013dfe86fb0fe55" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", "redox_syscall", @@ -2413,9 +2402,9 @@ [[package]] name = "rspotify" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb78abda8ea963ee7b86360b9fb329ac9c4741054e4eae2e8023dd164ad62ba3" +checksum = "f1e20ceabb52376647badaaf6d65dd068c963537dd82c705cd0af7621132a0bb" dependencies = [ "base64", "chrono", @@ -2434,9 +2423,9 @@ [[package]] name = "rspotify-http" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf0b185af7bd741b7dfada381ca2e5dd9b9956177ef648283158356ea7496f1" +checksum = "5fe28fe911336a08629c48241988d9f6f338babb69ef18d00d9bfdc7280ceb95" dependencies = [ "log", "maybe-async", @@ -2447,15 +2436,15 @@ [[package]] name = "rspotify-macros" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7069049eeaae3bb78400ebe78ec8b28b0961253c34a70a3b87bc636bd07451" +checksum = "47716be06c31041cca54ba9023e205969a91825b84f7196bbb60724b1e6fdfa9" [[package]] name = "rspotify-model" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9798a7952491066c52ce935805d387e9f634d750abc8133cc5ef971235e4ee09" +checksum = "989a2221f58bd204ab6f3f98681511dc94eb843c5ae5db379012fc1769853736" dependencies = [ "chrono", "serde", @@ -2491,7 +2480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.6", + "semver 1.0.7", ] [[package]] @@ -2587,9 +2576,9 @@ [[package]] name = "semver" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d" +checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" [[package]] name = "semver-parser" @@ -2629,9 +2618,9 @@ [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "f972498cf015f7c0746cac89ebe1d6ef10c293b94175a243a2d9442c163d9944" dependencies = [ "itoa", "ryu", @@ -2717,9 +2706,9 @@ [[package]] name = "shlex" -version = "0.1.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" @@ -2742,9 +2731,9 @@ [[package]] name = "slab" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "smallvec" @@ -2895,9 +2884,9 @@ [[package]] name = "syn" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea297be220d52398dcc07ce15a209fce436d361735ac1db700cab3b6cdfb9f54" +checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" dependencies = [ "proc-macro2", "quote", @@ -3049,9 +3038,9 @@ [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -3064,15 +3053,16 @@ [[package]] name = "tokio" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "0f48b6d60512a392e34dbf7fd456249fd2de3c83669ab642e021903f4015185b" dependencies = [ "bytes", "libc", "memchr", "mio", "num_cpus", + "once_cell", "pin-project-lite", "socket2", "tokio-macros", @@ -3126,10 +3116,24 @@ ] [[package]] +name = "tokio-util" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] @@ -3142,20 +3146,32 @@ [[package]] name = "tracing" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" +checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" dependencies = [ "cfg-if", "pin-project-lite", + "tracing-attributes", "tracing-core", ] [[package]] +name = "tracing-attributes" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] name = "tracing-core" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa31669fa42c09c34d94d8165dd2012e8ff3c66aca50f3bb226b68f216f2706c" +checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" dependencies = [ "lazy_static", ] @@ -3169,7 +3185,7 @@ "bytecount", "fnv", "lazy_static", - "nom 7.1.1", + "nom", "once_cell", "petgraph", ] @@ -3188,9 +3204,9 @@ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-normalization" @@ -3324,9 +3340,9 @@ [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3334,9 +3350,9 @@ [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" dependencies = [ "bumpalo", "lazy_static", @@ -3349,9 +3365,9 @@ [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" dependencies = [ "cfg-if", "js-sys", @@ -3361,9 +3377,9 @@ [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3371,9 +3387,9 @@ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" dependencies = [ "proc-macro2", "quote", @@ -3384,9 +3400,9 @@ [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" [[package]] name = "wayland-client" @@ -3449,29 +3465,15 @@ [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webbrowser" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c28b6b6a78440b02647358625e3febc90724126480b9da6a967b5f674b3554" -dependencies = [ - "jni", - "ndk-glue", - "url", - "web-sys", - "widestring", - "winapi", -] - -[[package]] name = "webpki" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3483,20 +3485,14 @@ [[package]] name = "webpki-roots" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" +checksum = "44d8de8415c823c8abd270ad483c6feeac771fad964890779f9a8cb24fbbc1bf" dependencies = [ "webpki", ] [[package]] -name = "widestring" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" - -[[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/Cargo.toml new/ncspot-0.9.8/Cargo.toml --- old/ncspot-0.9.7/Cargo.toml 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/Cargo.toml 2022-04-30 22:43:01.000000000 +0200 @@ -2,7 +2,7 @@ name = "ncspot" description = "ncurses Spotify client written in Rust using librespot, inspired by ncmpc and the likes." exclude = ["images/**"] -version = "0.9.7" +version = "0.9.8" authors = ["Henrik Friedrichsen <[email protected]>"] repository = "https://github.com/hrkfdn/ncspot" keywords = ["spotify", "ncurses", "librespot", "terminal"] @@ -14,13 +14,13 @@ maintenance = { status = "actively-developed" } [dependencies] -clap = "3.1.6" +clap = "3.1.12" chrono = "0.4" reqwest = { version = "0.11", features = ["blocking", "json"] } crossbeam-channel = "0.5" platform-dirs = "0.3.0" fern = "0.6" -futures = { version = "0.3", features = ["compat"] } +futures = "0.3" lazy_static = "1.3.0" librespot-core = "0.3.1" librespot-playback = "0.3.1" @@ -35,7 +35,6 @@ dbus = { version = "0.9.5", optional = true } dbus-tree = { version = "0.9.2", optional = true } rand = "0.8" -webbrowser = "0.6" clipboard = { version = "0.5", optional = true } wl-clipboard-rs = { version = "0.6", optional = true } url = "2.2" @@ -45,16 +44,16 @@ ioctl-rs = { version = "0.2", optional = true } serde_cbor = "0.11.2" pancurses = { version = "0.17.0", optional = true } -libc = "0.2.121" +libc = "0.2.124" parse_duration = "2.1.1" [dependencies.rspotify] -version = "0.11.3" +version = "0.11.5" default-features = false features = ["client-ureq", "ureq-rustls-tls"] [dependencies.cursive] -version = "0.17.0" +version = "0.18.0" default-features = false [dependencies.notify-rust] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/README.md new/ncspot-0.9.8/README.md --- old/ncspot-0.9.7/README.md 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/README.md 2022-04-30 22:43:01.000000000 +0200 @@ -308,7 +308,7 @@ Possible configuration values are: | Name | Description | Possible values | Default | -| :----------------------- | :------------------------------------------ | :------------------------------------------------ | :---------: | +| :----------------------- | :------------------------------------------ |:--------------------------------------------------|:-----------:| | `command_key` | Key to open command line | Single character | `:` | | `initial_screen` | Screen to show after startup | `"library"`, `"search"`, `"queue"`, `"cover"`[^2] | `"library"` | | `use_nerdfont` | Turn nerdfont glyphs on/off | `true`, `false` | `false` | @@ -326,6 +326,7 @@ | `gapless` | Enable gapless playback | `true`, `false` | `true` | | `shuffle` | Set default shuffle state | `true`, `false` | `false` | | `repeat` | Set default repeat mode | `off`, `track`, `playlist` | `off` | +| `playback_state` | Set default playback state | `"Stopped"`, `"Paused"`, `"Playing"`, `"Default"` | `"Paused"` | | `[theme]` | Custom theme | See [custom theme](#theming) | | | `[keybindings]` | Custom keybindings | See [custom keybindings](#custom-keybindings) | | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/commands.rs new/ncspot-0.9.8/src/commands.rs --- old/ncspot-0.9.7/src/commands.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/commands.rs 2022-04-30 22:43:01.000000000 +0200 @@ -12,7 +12,7 @@ use crate::queue::{Queue, RepeatSetting}; use crate::spotify::{Spotify, VOLUME_PERCENT}; use crate::traits::{IntoBoxedViewExt, ViewExt}; -use crate::ui::contextmenu::{AddToPlaylistMenu, ContextMenu, SelectArtistMenu}; +use crate::ui::contextmenu::{AddToPlaylistMenu, ContextMenu, PlayTrackMenu, SelectArtistMenu}; use crate::ui::help::HelpView; use crate::ui::layout::Layout; use crate::ui::modal::Modal; @@ -298,6 +298,8 @@ add_track_menu.on_command(s, cmd)? } else if let Some(mut select_artist) = s.find_name::<SelectArtistMenu>("selectartist") { select_artist.on_command(s, cmd)? + } else if let Some(mut play_track) = s.find_name::<PlayTrackMenu>("playtrackmenu") { + play_track.on_command(s, cmd)? } else { let mut main = s .find_name::<Layout>("main") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/config.rs new/ncspot-0.9.8/src/config.rs --- old/ncspot-0.9.7/src/config.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/config.rs 2022-04-30 22:43:01.000000000 +0200 @@ -15,6 +15,14 @@ pub const CLIENT_ID: &str = "d420a117a32841c2b3474932e49fb54b"; pub const CACHE_VERSION: u16 = 1; +#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)] +pub enum PlaybackState { + Playing, + Paused, + Stopped, + Default, +} + #[derive(Clone, Serialize, Deserialize, Debug, Default)] pub struct ConfigValues { pub command_key: Option<char>, @@ -37,6 +45,7 @@ pub shuffle: Option<bool>, pub repeat: Option<queue::RepeatSetting>, pub cover_max_scale: Option<f32>, + pub playback_state: Option<PlaybackState>, } #[derive(Serialize, Deserialize, Debug, Default, Clone)] @@ -83,17 +92,19 @@ pub queuestate: QueueState, pub playlist_orders: HashMap<String, SortingOrder>, pub cache_version: u16, + pub playback_state: PlaybackState, } impl Default for UserState { fn default() -> Self { UserState { - volume: u16::max_value(), + volume: u16::MAX, shuffle: false, repeat: queue::RepeatSetting::None, queuestate: QueueState::default(), playlist_orders: HashMap::new(), cache_version: 0, + playback_state: PlaybackState::Default, } } } @@ -129,6 +140,10 @@ userstate.repeat = repeat; } + if let Some(playback_state) = values.playback_state.clone() { + userstate.playback_state = playback_state; + } + Self { filename: filename.to_string(), values: RwLock::new(values), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/model/album.rs new/ncspot-0.9.8/src/model/album.rs --- old/ncspot-0.9.7/src/model/album.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/model/album.rs 2022-04-30 22:43:01.000000000 +0200 @@ -250,8 +250,7 @@ .tracks .as_ref()? .iter() - .map(|t| t.id.as_deref()) - .flatten() + .filter_map(|t| t.id.as_deref()) // spotify allows at max 5 seed items, so choose 4 random tracks... .choose_multiple(&mut thread_rng(), MAX_SEEDS - 1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/model/playlist.rs new/ncspot-0.9.8/src/model/playlist.rs --- old/ncspot-0.9.7/src/model/playlist.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/model/playlist.rs 2022-04-30 22:43:01.000000000 +0200 @@ -287,8 +287,7 @@ .tracks .as_ref()? .iter() - .map(|t| t.id()) - .flatten() + .filter_map(|t| t.id()) // only select unique tracks .collect::<HashSet<_>>() .into_iter() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/mpris.rs new/ncspot-0.9.8/src/mpris.rs --- old/ncspot-0.9.7/src/mpris.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/mpris.rs 2022-04-30 22:43:01.000000000 +0200 @@ -606,7 +606,7 @@ if let Some(tracks) = &playlist.tracks { let should_shuffle = queue.get_shuffle(); queue.clear(); - let index = queue.append_next(&tracks.to_vec()); + let index = queue.append_next(tracks); queue.play(index, should_shuffle, should_shuffle) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/queue.rs new/ncspot-0.9.8/src/queue.rs --- old/ncspot-0.9.7/src/queue.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/queue.rs 2022-04-30 22:43:01.000000000 +0200 @@ -9,6 +9,7 @@ use rand::prelude::*; use strum_macros::Display; +use crate::config::PlaybackState; use crate::model::playable::Playable; use crate::spotify::Spotify; use crate::{config::Config, spotify::PlayerEvent}; @@ -42,21 +43,32 @@ impl Queue { pub fn new(spotify: Spotify, cfg: Arc<Config>) -> Queue { - let state = cfg.state().queuestate.clone(); + let queue_state = cfg.state().queuestate.clone(); + let playback_state = cfg.state().playback_state.clone(); let queue = Queue { - queue: Arc::new(RwLock::new(state.queue)), + queue: Arc::new(RwLock::new(queue_state.queue)), spotify: spotify.clone(), - current_track: RwLock::new(state.current_track), - random_order: RwLock::new(state.random_order), + current_track: RwLock::new(queue_state.current_track), + random_order: RwLock::new(queue_state.random_order), cfg, notification_id: Arc::new(AtomicU32::new(0)), }; if let Some(playable) = queue.get_current() { - spotify.load(&playable, false, state.track_progress.as_millis() as u32); + spotify.load( + &playable, + playback_state == PlaybackState::Playing, + queue_state.track_progress.as_millis() as u32, + ); spotify.update_track(); - spotify.pause(); - spotify.seek(state.track_progress.as_millis() as u32); + match playback_state { + PlaybackState::Stopped => { + spotify.stop(); + } + PlaybackState::Paused | PlaybackState::Default | _ => { + spotify.pause(); + } + } } queue @@ -274,7 +286,11 @@ let notification_id = self.notification_id.clone(); std::thread::spawn({ let track_name = track.to_string(); - let cover_url = track.cover_url(); + let cover_url = if cfg!(feature = "cover") { + track.cover_url() + } else { + None + }; move || send_notification(&track_name, cover_url, notification_id) }); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/spotify_api.rs new/ncspot-0.9.8/src/spotify_api.rs --- old/ncspot-0.9.7/src/spotify_api.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/spotify_api.rs 2022-04-30 22:43:01.000000000 +0200 @@ -282,40 +282,33 @@ } pub fn album(&self, album_id: &str) -> Option<FullAlbum> { - self.api_with_retry(|api| api.album(&AlbumId::from_id(album_id).unwrap())) + let aid = AlbumId::from_id(album_id).ok()?; + self.api_with_retry(|api| api.album(&aid)) } pub fn artist(&self, artist_id: &str) -> Option<FullArtist> { - self.api_with_retry(|api| api.artist(&ArtistId::from_id(artist_id).unwrap())) + let aid = ArtistId::from_id(artist_id).ok()?; + self.api_with_retry(|api| api.artist(&aid)) } pub fn playlist(&self, playlist_id: &str) -> Option<FullPlaylist> { - self.api_with_retry(|api| { - api.playlist( - &PlaylistId::from_id(playlist_id).unwrap(), - None, - Some(&Market::FromToken), - ) - }) + let pid = PlaylistId::from_id(playlist_id).ok()?; + self.api_with_retry(|api| api.playlist(&pid, None, Some(&Market::FromToken))) } pub fn track(&self, track_id: &str) -> Option<FullTrack> { - self.api_with_retry(|api| api.track(&TrackId::from_id(track_id).unwrap())) + let tid = TrackId::from_id(track_id).ok()?; + self.api_with_retry(|api| api.track(&tid)) } pub fn get_show(&self, show_id: &str) -> Option<FullShow> { - self.api_with_retry(|api| { - api.get_a_show(&ShowId::from_id(show_id).unwrap(), Some(&Market::FromToken)) - }) + let sid = ShowId::from_id(show_id).ok()?; + self.api_with_retry(|api| api.get_a_show(&sid, Some(&Market::FromToken))) } pub fn episode(&self, episode_id: &str) -> Option<FullEpisode> { - self.api_with_retry(|api| { - api.get_an_episode( - &EpisodeId::from_id(episode_id).unwrap(), - Some(&Market::FromToken), - ) - }) + let eid = EpisodeId::from_id(episode_id).ok()?; + self.api_with_retry(|api| api.get_an_episode(&eid, Some(&Market::FromToken))) } pub fn recommendations( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/ui/contextmenu.rs new/ncspot-0.9.8/src/ui/contextmenu.rs --- old/ncspot-0.9.7/src/ui/contextmenu.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/ui/contextmenu.rs 2022-04-30 22:43:01.000000000 +0200 @@ -1,3 +1,4 @@ +use std::borrow::Borrow; use std::sync::Arc; use cursive::view::{Margins, ViewWrapper}; @@ -26,6 +27,10 @@ dialog: Modal<Dialog>, } +pub struct PlayTrackMenu { + dialog: Modal<Dialog>, +} + pub struct AddToPlaylistMenu { dialog: Modal<Dialog>, } @@ -35,6 +40,7 @@ } enum ContextMenuAction { + PlayTrack(Box<Track>), ShowItem(Box<dyn ListItem>), SelectArtist(Vec<Artist>), ShareUrl(String), @@ -44,6 +50,30 @@ } impl ContextMenu { + pub fn play_track_dialog(queue: Arc<Queue>, track: Track) -> NamedView<PlayTrackMenu> { + let track_title = track.title.clone(); + let mut list_select = SelectView::<bool>::new(); + list_select.add_item("Play now", true); + list_select.add_item("Add to queue", false); + list_select.set_on_submit(move |s, selected| { + match selected { + true => track.borrow().clone().play(queue.clone()), + false => track.borrow().clone().queue(queue.clone()), + } + s.pop_layer(); + }); + let dialog = Dialog::new() + .title(format!("Play track: {}", track_title)) + .dismiss_button("Cancel") + .padding(Margins::lrtb(1, 1, 1, 0)) + .content(ScrollView::new(list_select.with_name("playtrack_select"))); + + PlayTrackMenu { + dialog: Modal::new_ext(dialog), + } + .with_name("playtrackmenu") + } + pub fn add_track_dialog( library: Arc<Library>, spotify: Spotify, @@ -162,6 +192,11 @@ content.add_item("Share album", ContextMenuAction::ShareUrl(url)); } if let Some(t) = item.track() { + content.insert_item( + 0, + "Play track", + ContextMenuAction::PlayTrack(Box::new(t.clone())), + ); content.add_item( "Add to playlist", ContextMenuAction::AddToPlaylist(Box::new(t.clone())), @@ -186,6 +221,10 @@ let library = library.clone(); match action { + ContextMenuAction::PlayTrack(track) => { + let dialog = Self::play_track_dialog(queue, *track.clone()); + s.add_layer(dialog); + } ContextMenuAction::ShowItem(item) => { if let Some(view) = item.open(queue, library) { s.call_on_name("main", move |v: &mut Layout| v.push_view(view)); @@ -228,6 +267,13 @@ } } +impl ViewExt for PlayTrackMenu { + fn on_command(&mut self, s: &mut Cursive, cmd: &Command) -> Result<CommandResult, String> { + log::info!("playtrack command: {:?}", cmd); + handle_move_command::<bool>(&mut self.dialog, s, cmd, "playtrack_select") + } +} + impl ViewExt for AddToPlaylistMenu { fn on_command(&mut self, s: &mut Cursive, cmd: &Command) -> Result<CommandResult, String> { log::info!("playlist command: {:?}", cmd); @@ -285,6 +331,10 @@ } } +impl ViewWrapper for PlayTrackMenu { + wrap_impl!(self.dialog: Modal<Dialog>); +} + impl ViewWrapper for AddToPlaylistMenu { wrap_impl!(self.dialog: Modal<Dialog>); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ncspot-0.9.7/src/ui/listview.rs new/ncspot-0.9.8/src/ui/listview.rs --- old/ncspot-0.9.7/src/ui/listview.rs 2022-03-23 22:01:10.000000000 +0100 +++ new/ncspot-0.9.8/src/ui/listview.rs 2022-04-30 22:43:01.000000000 +0200 @@ -136,7 +136,7 @@ .map(|t| Playable::Track(t.clone())) .collect::<Vec<Playable>>() }); - if let Some(tracks) = playables.or_else(|| tracks.as_ref()) { + if let Some(tracks) = playables.or(tracks.as_ref()) { let index = self.queue.append_next(tracks); self.queue.play(index + self.selected, true, false); true ++++++ vendor.tar.xz ++++++ /work/SRC/openSUSE:Factory/ncspot/vendor.tar.xz /work/SRC/openSUSE:Factory/.ncspot.new.1538/vendor.tar.xz differ: char 27, line 1
