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

Reply via email to