Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/Readarr/commit/b506fd3ab7fafd15fa0d6c179623f26dac3605ea
You should set ROOT_URL correctly, otherwise the web may not work correctly.
20 changed files with
117 additions and
88 deletions
@ -116,12 +116,13 @@ class AddNewArtistSearchResult extends Component {
{
isExistingArtist &&
< Icon
className = { styles . alreadyExistsIcon }
name = { icons . CHECK _CIRCLE }
size = { 36 }
title = "Already in your library"
/ >
< span title = "Already in your library" >
< Icon
className = { styles . alreadyExistsIcon }
name = { icons . CHECK _CIRCLE }
size = { 36 }
/ >
< / s p a n >
}
< / d i v >
@ -134,12 +134,13 @@ class AlbumDetailsMedium extends Component {
className = { styles . expandButton }
onPress = { this . onExpandPress }
>
< Icon
className = { styles . expandButtonIcon }
name = { isExpanded ? icons . COLLAPSE : icons . EXPAND }
title = { isExpanded ? 'Hide tracks' : 'Show tracks' }
size = { 24 }
/ >
< span title = { isExpanded ? 'Hide tracks' : 'Show tracks' } >
< Icon
className = { styles . expandButtonIcon }
name = { isExpanded ? icons . COLLAPSE : icons . EXPAND }
size = { 24 }
/ >
< / s p a n >
{
! isSmallScreen &&
< span > & nbsp ; < / s p a n >
@ -48,10 +48,9 @@ function EpisodeStatus(props) {
if ( grabbed ) {
return (
< div className = { styles . center } >
< div className = { styles . center } title = "Album is downloading" >
< Icon
name = { icons . DOWNLOADING }
title = "Album is downloading"
/ >
< / d i v >
) ;
@ -75,10 +74,9 @@ function EpisodeStatus(props) {
if ( ! airDateUtc ) {
return (
< div className = { styles . center } >
< div className = { styles . center } title = "TBA" >
< Icon
name = { icons . TBA }
title = "TBA"
/ >
< / d i v >
) ;
@ -86,10 +84,9 @@ function EpisodeStatus(props) {
if ( ! monitored ) {
return (
< div className = { styles . center } >
< div className = { styles . center } title = "Album is not monitored" >
< Icon
name = { icons . UNMONITORED }
title = "Album is not monitored"
/ >
< / d i v >
) ;
@ -97,20 +94,18 @@ function EpisodeStatus(props) {
if ( hasAired ) {
return (
< div className = { styles . center } >
< div className = { styles . center } title = "Track missing from disk" >
< Icon
name = { icons . MISSING }
title = "Track missing from disk"
/ >
< / d i v >
) ;
}
return (
< div className = { styles . center } >
< div className = { styles . center } title = "Album has not aired" >
< Icon
name = { icons . NOT _AIRED }
title = "Album has not aired"
/ >
< / d i v >
) ;
@ -39,12 +39,12 @@ class AlbumStudioRow extends Component {
/ >
< TableRowCell className = { styles . status } >
< Icon
className = { styles . statusIcon }
name = { status === 'ended' ? icons . ARTIST _ENDED : icons . ARTIST _CONTINUING }
title = { status === 'ended' ? 'Ended' : 'Continuing' }
/ >
< span title = { status === 'ended' ? 'Ended' : 'Continuing' } >
< Icon
className = { styles . statusIcon }
name = { status === 'ended' ? icons . ARTIST _ENDED : icons . ARTIST _CONTINUING }
/ >
< / s p a n >
< / T a b l e R o w C e l l >
< TableRowCell className = { styles . title } >
@ -67,14 +67,11 @@ class ArtistBanner extends Component {
hasError : false ,
isLoaded : true
} ) ;
}
// The banner could not be loaded..
if ( ! nextBanner && ( this . props !== prevProps ) ) {
} else if ( ! nextBanner && banner ) {
this . setState ( {
banner : undefined ,
banner : nextBanner ,
bannerUrl : bannerPlaceholder ,
hasError : tru e
hasError : fals e
} ) ;
}
}
@ -67,14 +67,11 @@ class ArtistPoster extends Component {
hasError : false ,
isLoaded : true
} ) ;
}
// The poster could not be loaded..
if ( ! nextPoster && ( this . props !== prevProps ) ) {
} else if ( ! nextPoster && poster ) {
this . setState ( {
poster : undefined ,
poster : nextPoster ,
posterUrl : posterPlaceholder ,
hasError : tru e
hasError : fals e
} ) ;
}
}
@ -136,7 +136,9 @@ DeleteArtistModalContent.propTypes = {
} ;
DeleteArtistModalContent . defaultProps = {
trackFileCount : 0
statistics : {
trackFileCount : 0
}
} ;
export default DeleteArtistModalContent ;
@ -150,12 +150,13 @@ class ArtistDetailsSeason extends Component {
< / d i v >
< Icon
className = { styles . expandButtonIcon }
name = { isExpanded ? icons . COLLAPSE : icons . EXPAND }
title = { isExpanded ? 'Hide albums' : 'Show albums' }
size = { 24 }
/ >
< span title = { isExpanded ? 'Hide albums' : 'Show albums' } >
< Icon
className = { styles . expandButtonIcon }
name = { isExpanded ? icons . COLLAPSE : icons . EXPAND }
size = { 24 }
/ >
< / s p a n >
{
! isSmallScreen &&
@ -19,18 +19,19 @@ function ArtistStatusCell(props) {
className = { className }
{ ... otherProps }
>
< Icon
className = { styles . statusIcon }
name = { monitored ? icons . MONITORED : icons . UNMONITORED }
title = { monitored ? 'Artist is monitored' : 'Artist is unmonitored' }
/ >
< span title = { monitored ? 'Artist is monitored' : 'Artist is unmonitored' } >
< Icon
className = { styles . statusIcon }
name = { monitored ? icons . MONITORED : icons . UNMONITORED }
/ >
< / s p a n >
< Icon
className = { styles . statusIcon }
name = { status === 'ended' ? icons . ARTIST _ENDED : icons . ARTIST _CONTINUING }
title = { status === 'ended' ? 'Ended' : 'Continuing' }
/ >
< span title = { status === 'ended' ? 'Ended' : 'Continuing' } >
< Icon
className = { styles . statusIcon }
name = { status === 'ended' ? icons . ARTIST _ENDED : icons . ARTIST _CONTINUING }
/ >
< / s p a n >
< / C o m p o n e n t >
) ;
}
@ -107,10 +107,11 @@ class AgendaEvent extends Component {
{
! queueItem && grabbed &&
< Icon
name = { icons . DOWNLOADING }
title = "Album is downloading"
/ >
< span title = "Album is downloading" >
< Icon
name = { icons . DOWNLOADING }
/ >
< / s p a n >
}
< / L i n k >
< / d i v >
@ -91,11 +91,12 @@ class CalendarEvent extends Component {
{
! queueItem && grabbed &&
< Icon
className = { styles . statusIcon }
name = { icons . DOWNLOADING }
title = "Album is downloading"
/ >
< span title = "Album is downloading" >
< Icon
className = { styles . statusIcon }
name = { icons . DOWNLOADING }
/ >
< / s p a n >
}
< / d i v >
@ -16,6 +16,10 @@ function Icon(props) {
... otherProps
} = props ;
if ( title && ! window . Lidarr . isProduction ) {
console . error ( 'Icons cannot have a title' ) ;
}
return (
< FontAwesomeIcon
className = { classNames (
@ -24,7 +28,6 @@ function Icon(props) {
) }
icon = { name }
spin = { isSpinning }
title = { title }
style = { {
fontSize : ` ${ size } px `
} }
@ -45,10 +45,9 @@ function Message(props) {
styles [ type ]
) }
>
< div className = { styles . iconContainer } >
< div className = { styles . iconContainer } title = { name } >
< Icon
name = { getIconName ( name ) }
title = { name }
/ >
< / d i v >
@ -92,10 +92,9 @@ class QualityProfileItem extends Component {
{
connectDragSource (
< div className = { styles . dragHandle } >
< div className = { styles . dragHandle } title = "Create group" >
< Icon
className = { styles . dragIcon }
title = "Create group"
name = { icons . REORDER }
/ >
< / d i v >
@ -129,11 +129,10 @@ class QualityProfileItemGroup extends Component {
{
connectDragSource (
< div className = { styles . dragHandle } >
< div className = { styles . dragHandle } title = "Reorder" >
< Icon
className = { styles . dragIcon }
name = { icons . REORDER }
title = "Reorder"
/ >
< / d i v >
)
@ -45,7 +45,7 @@ export const defaultState = {
filters : [
{
key : 'monitored' ,
value : false ,
value : false || true ,
type : filterTypes . EQUAL
}
]
@ -192,7 +192,6 @@ export const clearCalendar = createAction(CLEAR_CALENDAR);
// Action Handlers
export const actionHandlers = handleThunks ( {
[ FETCH _CALENDAR ] : function ( getState , payload , dispatch ) {
const state = getState ( ) ;
const unmonitored = state . calendar . selectedFilterKey === 'all' ;
@ -339,8 +338,8 @@ export const reducers = createHandleActions({
[ CLEAR _CALENDAR ] : ( state ) => {
const {
view ,
showUpcoming ,
selectedFilterKey ,
showUpcoming ,
... otherDefaultState
} = defaultState ;
@ -225,7 +225,7 @@ export const actionHandlers = handleThunks({
promise . done ( ( data ) => {
dispatch ( batchActions ( [
dispatch( fetchQueue( ) ) ,
fetchQueue( ) ,
set ( {
section : paged ,
@ -87,10 +87,11 @@ class BackupRow extends Component {
< TableRow key = { id } >
< TableRowCell className = { styles . type } >
{
< Icon
name = { iconClassName }
title = { iconTooltip }
/ >
< span title = { iconTooltip } >
< Icon
name = { iconClassName }
/ >
< / s p a n >
}
< / T a b l e R o w C e l l >
@ -125,11 +125,12 @@ class Health extends Component {
return (
< TableRow key = { ` health ${ item . message } ` } >
< TableRowCell >
< Icon
name = { icons . DANGER }
kind = { item . type . toLowerCase ( ) === 'error' ? kinds . DANGER : kinds . WARNING }
title = { titleCase ( item . type ) }
/ >
< span title = { titleCase ( item . type ) } >
< Icon
name = { icons . DANGER }
kind = { item . type . toLowerCase ( ) === 'error' ? kinds . DANGER : kinds . WARNING }
/ >
< / s p a n >
< / T a b l e R o w C e l l >
< TableRowCell > { item . message } < / T a b l e R o w C e l l >
@ -1,3 +1,4 @@
using System ;
using System.Collections.Generic ;
using NzbDrone.Core.Messaging.Commands ;
@ -11,9 +12,39 @@ namespace NzbDrone.Core.Music.Commands
public override bool SendUpdatesToClient = > true ;
}
public class BulkMoveArtist
public class BulkMoveArtist : IEquatable < BulkMoveArtist >
{
public int ArtistId { get ; set ; }
public string SourcePath { get ; set ; }
public bool Equals ( BulkMoveArtist other )
{
if ( other = = null )
{
return false ;
}
return ArtistId . Equals ( other . ArtistId ) ;
}
public override bool Equals ( object obj )
{
if ( obj = = null )
{
return false ;
}
if ( obj . GetType ( ) ! = GetType ( ) )
{
return false ;
}
return ArtistId . Equals ( ( ( BulkMoveArtist ) obj ) . ArtistId ) ;
}
public override int GetHashCode ( )
{
return ArtistId . GetHashCode ( ) ;
}
}
}