Compare commits
No commits in common. "56e4431a5817700b4258147511692396bc417264" and "38a7f97cad7f05c197866c84d607f6c8619db543" have entirely different histories.
56e4431a58
...
38a7f97cad
7 changed files with 30 additions and 61 deletions
17
Cargo.lock
generated
17
Cargo.lock
generated
|
@ -2224,7 +2224,6 @@ dependencies = [
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"toml",
|
"toml",
|
||||||
"urlencoding",
|
"urlencoding",
|
||||||
"winresource",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2286,12 +2285,6 @@ version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
|
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version_check"
|
|
||||||
version = "0.9.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "want"
|
name = "want"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
|
@ -2707,16 +2700,6 @@ dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winresource"
|
|
||||||
version = "0.1.20"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ba4a67c78ee5782c0c1cb41bebc7e12c6e79644daa1650ebbc1de5d5b08593f7"
|
|
||||||
dependencies = [
|
|
||||||
"toml",
|
|
||||||
"version_check",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wit-bindgen-rt"
|
name = "wit-bindgen-rt"
|
||||||
version = "0.39.0"
|
version = "0.39.0"
|
||||||
|
|
|
@ -23,6 +23,3 @@ opt-level = "z"
|
||||||
lto = "thin"
|
lto = "thin"
|
||||||
strip = true
|
strip = true
|
||||||
panic = "abort"
|
panic = "abort"
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
winresource = "0.1.20"
|
|
||||||
|
|
13
build.rs
13
build.rs
|
@ -1,13 +0,0 @@
|
||||||
use std::{env, io};
|
|
||||||
|
|
||||||
use winresource::WindowsResource;
|
|
||||||
|
|
||||||
fn main() -> Result<(), io::Error> {
|
|
||||||
if env::var_os("CARGO_CFG_WINDOWS").is_some() {
|
|
||||||
WindowsResource::new()
|
|
||||||
.set_icon("res/tyrolienne.ico")
|
|
||||||
.compile()?;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 37 KiB |
|
@ -159,8 +159,6 @@ impl AsyncComponent for Tyrolienne {
|
||||||
gtk::ListBox {
|
gtk::ListBox {
|
||||||
set_selection_mode: gtk::SelectionMode::None,
|
set_selection_mode: gtk::SelectionMode::None,
|
||||||
set_css_classes: &["boxed-list"],
|
set_css_classes: &["boxed-list"],
|
||||||
#[watch]
|
|
||||||
set_sensitive: matches!(model.step, Step::Waiting),
|
|
||||||
|
|
||||||
adw::ActionRow {
|
adw::ActionRow {
|
||||||
set_activatable: true,
|
set_activatable: true,
|
||||||
|
@ -393,6 +391,7 @@ impl AsyncComponent for Tyrolienne {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO app icon (windows)
|
||||||
fn main() {
|
fn main() {
|
||||||
match ffmpeg::check().and_then(|_| get_config()) {
|
match ffmpeg::check().and_then(|_| get_config()) {
|
||||||
Ok(config) => RelmApp::new("net.uku3lig.tyrolienne").run_async::<Tyrolienne>(config),
|
Ok(config) => RelmApp::new("net.uku3lig.tyrolienne").run_async::<Tyrolienne>(config),
|
||||||
|
|
|
@ -150,6 +150,7 @@ impl SimpleComponent for Toast {
|
||||||
|
|
||||||
pub struct StandaloneDialog;
|
pub struct StandaloneDialog;
|
||||||
|
|
||||||
|
// TODO: don't open a window, just give a HeaderBar to the dialog
|
||||||
impl SimpleComponent for StandaloneDialog {
|
impl SimpleComponent for StandaloneDialog {
|
||||||
type Init = String;
|
type Init = String;
|
||||||
type Input = ();
|
type Input = ();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::{error::Error, fmt::Display, path::Path, sync::LazyLock};
|
use std::{path::Path, sync::LazyLock};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::{Result, bail};
|
||||||
use futures::StreamExt;
|
use futures::StreamExt;
|
||||||
use relm4::Sender;
|
use relm4::Sender;
|
||||||
use reqwest::{
|
use reqwest::{
|
||||||
|
@ -47,25 +47,6 @@ pub struct ZiplineShortUrl {
|
||||||
url: String,
|
url: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct ZiplineError {
|
|
||||||
error: String,
|
|
||||||
status_code: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Display for ZiplineError {
|
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
||||||
write!(
|
|
||||||
f,
|
|
||||||
"An error occurred ({}): {}",
|
|
||||||
self.status_code, self.error
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Error for ZiplineError {}
|
|
||||||
|
|
||||||
impl ZiplineFileInfo {
|
impl ZiplineFileInfo {
|
||||||
pub fn thumbnail_url(&self, config: &Config) -> Option<String> {
|
pub fn thumbnail_url(&self, config: &Config) -> Option<String> {
|
||||||
self.thumbnail
|
self.thumbnail
|
||||||
|
@ -99,6 +80,7 @@ async fn wrap_file(path: &Path, sender: Sender<ProgressMessage>) -> Result<Part>
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: make a ZiplineError type
|
||||||
pub async fn get_folders(config: &Config) -> Result<Vec<ZiplineFolder>> {
|
pub async fn get_folders(config: &Config) -> Result<Vec<ZiplineFolder>> {
|
||||||
let url = format!("{}api/user/folders?noincl=true", config.fixed_url());
|
let url = format!("{}api/user/folders?noincl=true", config.fixed_url());
|
||||||
|
|
||||||
|
@ -109,7 +91,11 @@ pub async fn get_folders(config: &Config) -> Result<Vec<ZiplineFolder>> {
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if res.status() != StatusCode::OK {
|
if res.status() != StatusCode::OK {
|
||||||
Err(res.json::<ZiplineError>().await?.into())
|
bail!(
|
||||||
|
"an error occurred ({}): {}",
|
||||||
|
res.status(),
|
||||||
|
res.text().await?
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
res.json().await.map_err(Into::into)
|
res.json().await.map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
@ -139,7 +125,11 @@ pub async fn upload_file(
|
||||||
let res = req.send().await?;
|
let res = req.send().await?;
|
||||||
|
|
||||||
if res.status() != StatusCode::OK {
|
if res.status() != StatusCode::OK {
|
||||||
Err(res.json::<ZiplineError>().await?.into())
|
bail!(
|
||||||
|
"an error occurred ({}): {}",
|
||||||
|
res.status(),
|
||||||
|
res.text().await?
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
res.json().await.map_err(Into::into)
|
res.json().await.map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
@ -156,7 +146,11 @@ pub async fn recalc_thumbnails(config: &Config) -> Result<()> {
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if res.status() != StatusCode::OK {
|
if res.status() != StatusCode::OK {
|
||||||
Err(res.json::<ZiplineError>().await?.into())
|
bail!(
|
||||||
|
"an error occurred ({}): {}",
|
||||||
|
res.status(),
|
||||||
|
res.text().await?
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -172,7 +166,11 @@ pub async fn get_file_details(config: &Config, id: &str) -> Result<ZiplineFileIn
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if res.status() != StatusCode::OK {
|
if res.status() != StatusCode::OK {
|
||||||
Err(res.json::<ZiplineError>().await?.into())
|
bail!(
|
||||||
|
"an error occurred ({}): {}",
|
||||||
|
res.status(),
|
||||||
|
res.text().await?
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
res.json().await.map_err(Into::into)
|
res.json().await.map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
@ -195,7 +193,11 @@ pub async fn shorten_url(config: &Config, to_shorten: &str) -> Result<String> {
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
if res.status() != StatusCode::OK {
|
if res.status() != StatusCode::OK {
|
||||||
Err(res.json::<ZiplineError>().await?.into())
|
bail!(
|
||||||
|
"an error occurred ({}): {}",
|
||||||
|
res.status(),
|
||||||
|
res.text().await?
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
let out: ZiplineShortUrl = res.json().await?;
|
let out: ZiplineShortUrl = res.json().await?;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue