Merge pull request 'Refresh thumbnails after an upload or file move' (#25) from feature/refresh-thumbnails-improvements into master
Reviewed-on: #25
This commit was merged in pull request #25.
This commit is contained in:
21
src/files.rs
21
src/files.rs
@@ -1,3 +1,4 @@
|
||||
|
||||
use std::fmt::Debug;
|
||||
use std::fs::read_dir;
|
||||
use std::io;
|
||||
@@ -6,6 +7,7 @@ use std::path::{Path, PathBuf};
|
||||
use std::sync::Mutex;
|
||||
|
||||
use ::anyhow;
|
||||
use actix::{Handler, Message};
|
||||
use anyhow::{anyhow, Context};
|
||||
|
||||
use actix_web::web::Data;
|
||||
@@ -16,12 +18,13 @@ use actix_web::{
|
||||
use log::{debug, error, info};
|
||||
|
||||
use crate::data::{Claims, FilesRequest, FilterMode, PhotosResponse};
|
||||
use crate::AppState;
|
||||
use crate::{AppState, create_thumbnails};
|
||||
|
||||
use crate::error::IntoHttpError;
|
||||
use crate::tags::TagDao;
|
||||
use path_absolutize::*;
|
||||
use serde::Deserialize;
|
||||
use crate::video::StreamActor;
|
||||
|
||||
pub async fn list_photos<TagD: TagDao, FS: FileSystemAccess>(
|
||||
_: Claims,
|
||||
@@ -211,6 +214,7 @@ pub async fn move_file<FS: FileSystemAccess>(
|
||||
{
|
||||
Ok(_) => {
|
||||
info!("Moved file: {} -> {}", request.source, request.destination,);
|
||||
app_state.stream_manager.do_send(RefreshThumbnailsMessage);
|
||||
|
||||
HttpResponse::Ok().finish()
|
||||
}
|
||||
@@ -272,6 +276,21 @@ impl FileSystemAccess for RealFileSystem {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct RefreshThumbnailsMessage;
|
||||
|
||||
impl Message for RefreshThumbnailsMessage {
|
||||
type Result = ();
|
||||
}
|
||||
|
||||
impl Handler<RefreshThumbnailsMessage> for StreamActor {
|
||||
type Result = ();
|
||||
|
||||
fn handle(&mut self, _msg: RefreshThumbnailsMessage, _ctx: &mut Self::Context) -> Self::Result {
|
||||
debug!("Refreshing thumbnails after upload");
|
||||
create_thumbnails()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::collections::HashMap;
|
||||
|
||||
@@ -36,7 +36,7 @@ use log::{debug, error, info, warn};
|
||||
use crate::auth::login;
|
||||
use crate::data::*;
|
||||
use crate::database::*;
|
||||
use crate::files::{is_image_or_video, is_valid_full_path, move_file, RealFileSystem};
|
||||
use crate::files::{is_image_or_video, is_valid_full_path, move_file, RealFileSystem, RefreshThumbnailsMessage};
|
||||
use crate::service::ServiceBuilder;
|
||||
use crate::state::AppState;
|
||||
use crate::tags::*;
|
||||
@@ -185,8 +185,6 @@ async fn upload_image(
|
||||
|
||||
let mut file = File::create(new_path).unwrap();
|
||||
file.write_all(&file_content).unwrap();
|
||||
|
||||
return HttpResponse::Ok().finish();
|
||||
}
|
||||
} else {
|
||||
error!("Invalid path for upload: {:?}", full_path);
|
||||
@@ -196,6 +194,8 @@ async fn upload_image(
|
||||
return HttpResponse::BadRequest().body("No file body read");
|
||||
}
|
||||
|
||||
app_state.stream_manager.do_send(RefreshThumbnailsMessage);
|
||||
|
||||
HttpResponse::Ok().finish()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user