From b14b9114f837cacf9f7788e88c503142a81585be Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Thu, 5 May 2022 15:14:40 +0000 Subject: [PATCH] feat: invalid symlink icon --- files/file.go | 14 ++++++++++---- frontend/src/components/files/ListingItem.vue | 2 +- frontend/src/css/listing-icons.css | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/files/file.go b/files/file.go index 569b0be4..2d96d4c5 100644 --- a/files/file.go +++ b/files/file.go @@ -322,7 +322,7 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { continue } - isSymlink := false + isSymlink, isInvalidLink := false, false if IsSymlink(f.Mode()) { isSymlink = true // It's a symbolic link. We try to follow it. If it doesn't work, @@ -330,6 +330,8 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { info, err := i.Fs.Stat(fPath) if err == nil { f = info + } else { + isInvalidLink = true } } @@ -350,9 +352,13 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { } else { listing.NumFiles++ - err := file.detectType(true, false, readHeader) - if err != nil { - return err + if isInvalidLink { + file.Type = "invalid_link" + } else { + err := file.detectType(true, false, readHeader) + if err != nil { + return err + } } } diff --git a/frontend/src/components/files/ListingItem.vue b/frontend/src/components/files/ListingItem.vue index 4495be82..b2853fcb 100644 --- a/frontend/src/components/files/ListingItem.vue +++ b/frontend/src/components/files/ListingItem.vue @@ -98,7 +98,7 @@ export default { methods: { ...mapMutations(["addSelected", "removeSelected", "resetSelected"]), humanSize: function () { - return filesize(this.size); + return this.type == "invalid_link" ? "invalid link" : filesize(this.size); }, humanTime: function () { if (this.readOnly == undefined && this.user.dateFormat) { diff --git a/frontend/src/css/listing-icons.css b/frontend/src/css/listing-icons.css index 2de6baab..32c87755 100644 --- a/frontend/src/css/listing-icons.css +++ b/frontend/src/css/listing-icons.css @@ -11,6 +11,7 @@ .file-icons [data-type=pdf] i::before { content: 'description' } .file-icons [data-type=text] i::before { content: 'description' } .file-icons [data-type=video] i::before { content: 'movie' } +.file-icons [data-type=invalid_link] i::before { content: 'link_off' } /* #f90 - Image */ @@ -125,6 +126,7 @@ .file-icons [data-type=audio] i { color: var(--icon-yellow) } .file-icons [data-type=image] i { color: var(--icon-orange) } .file-icons [data-type=video] i { color: var(--icon-violet) } +.file-icons [data-type=invalid_link] i { color: var(--icon-red) } /* #f00 - Adobe/Oracle */