Compare commits

...

5 Commits

2 changed files with 20 additions and 17 deletions

View File

@ -542,24 +542,14 @@ impl Album {
pub fn get_album_data(album_id: i32, conn: &mut PgPooledConn) -> Result<AlbumData, Box<dyn Error>> { pub fn get_album_data(album_id: i32, conn: &mut PgPooledConn) -> Result<AlbumData, Box<dyn Error>> {
use crate::schema::*; use crate::schema::*;
let album: Vec<(Album, std::option::Option<Artist>)> = albums::table let artist_list: Vec<Artist> = album_artists::table
.find(album_id) .filter(album_artists::album_id.eq(album_id))
.left_join(songs::table.on(albums::id.nullable().eq(songs::album_id))) .inner_join(artists::table.on(album_artists::artist_id.eq(artists::id)))
.left_join(song_artists::table.inner_join(artists::table).on(songs::id.eq(song_artists::song_id))) .select(
.select(( artists::all_columns
albums::all_columns, )
artists::all_columns.nullable()
))
.distinct()
.load(conn)?; .load(conn)?;
let mut artist_list: Vec<Artist> = Vec::new();
for (_, artist) in album {
if let Some(artist) = artist {
artist_list.push(artist);
}
}
// Get info of album // Get info of album
let albuminfo = albums::table let albuminfo = albums::table
.filter(albums::id.eq(album_id)) .filter(albums::id.eq(album_id))
@ -671,7 +661,7 @@ impl Album {
// Sort the songs by date // Sort the songs by date
let mut songdata: Vec<SongData> = album_songs.into_values().collect(); let mut songdata: Vec<SongData> = album_songs.into_values().collect();
songdata.sort_by(|a, b| b.track.cmp(&a.track)); songdata.sort_by(|a, b| a.track.cmp(&b.track));
Ok(songdata) Ok(songdata)
} }
} }

View File

@ -10,6 +10,7 @@ use crate::components::loading::Loading;
pub fn Login() -> impl IntoView { pub fn Login() -> impl IntoView {
let (username_or_email, set_username_or_email) = create_signal("".to_string()); let (username_or_email, set_username_or_email) = create_signal("".to_string());
let (password, set_password) = create_signal("".to_string()); let (password, set_password) = create_signal("".to_string());
let (two_fa_code, set_two_fa_code) = create_signal("".to_string());
let (show_password, set_show_password) = create_signal(false); let (show_password, set_show_password) = create_signal(false);
@ -27,6 +28,8 @@ pub fn Login() -> impl IntoView {
let username_or_email1 = username_or_email.get(); let username_or_email1 = username_or_email.get();
let password1 = password.get(); let password1 = password.get();
let two_fa_code1 = two_fa_code.get();
spawn_local(async move { spawn_local(async move {
loading.set(true); loading.set(true);
error_msg.set(None); error_msg.set(None);
@ -106,6 +109,16 @@ pub fn Login() -> impl IntoView {
</Show> </Show>
</div> </div>
<div class="input-box">
<input class="login-2fa" type="text" required
on:input = move |ev| {
set_two_fa_code(event_target_value(&ev));
log!("2FA code changed to: {}", two_fa_code.get());
}
/>
<span>2FA Code</span>
<i></i>
</div>
<a href="" class="forgot-pw">Forgot Password?</a> <a href="" class="forgot-pw">Forgot Password?</a>
<div class="error-msg" >{ move || error_msg.get() }</div> <div class="error-msg" >{ move || error_msg.get() }</div>
<Show <Show