diff --git a/API.Tests/Services/MetadataServiceTests.cs b/API.Tests/Services/MetadataServiceTests.cs
index 3f550f80a..796201538 100644
--- a/API.Tests/Services/MetadataServiceTests.cs
+++ b/API.Tests/Services/MetadataServiceTests.cs
@@ -36,6 +36,13 @@ namespace API.Tests.Services
}, false, false));
}
+ [Fact]
+ public void ShouldUpdateCoverImage_OnFirstRunSeries()
+ {
+ // Represents first run
+ Assert.True(MetadataService.ShouldUpdateCoverImage(null,null, false, false));
+ }
+
[Fact]
public void ShouldUpdateCoverImage_OnSecondRun_FileModified()
{
diff --git a/API/API.csproj b/API/API.csproj
index 7d2707e28..74bf6fbbc 100644
--- a/API/API.csproj
+++ b/API/API.csproj
@@ -73,7 +73,6 @@
-
@@ -118,6 +117,9 @@
+
+ Always
+
diff --git a/API/Services/MetadataService.cs b/API/Services/MetadataService.cs
index 2db52fe3f..aa175c021 100644
--- a/API/Services/MetadataService.cs
+++ b/API/Services/MetadataService.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
-using System.IO;
using System.Linq;
using System.Threading.Tasks;
using API.Comparators;
@@ -21,7 +20,7 @@ namespace API.Services
private readonly IArchiveService _archiveService;
private readonly IBookService _bookService;
private readonly IImageService _imageService;
- private readonly ChapterSortComparer _chapterSortComparer = new ChapterSortComparer();
+ private readonly ChapterSortComparerZeroFirst _chapterSortComparerForInChapterSorting = new ChapterSortComparerZeroFirst();
///
/// Width of the Thumbnail generation
///
@@ -37,11 +36,6 @@ namespace API.Services
_imageService = imageService;
}
- private static bool IsCoverImageSet(byte[] coverImage, bool forceUpdate = false)
- {
- return forceUpdate || HasCoverImage(coverImage);
- }
-
///
/// Determines whether an entity should regenerate cover image
///
@@ -104,10 +98,11 @@ namespace API.Services
/// Force updating cover image even if underlying file has not been modified or chapter already has a cover image
public void UpdateMetadata(Volume volume, bool forceUpdate)
{
- if (volume == null || !IsCoverImageSet(volume.CoverImage, forceUpdate)) return;
+ if (volume == null || !ShouldUpdateCoverImage(volume.CoverImage, null, forceUpdate
+ , false)) return;
volume.Chapters ??= new List();
- var firstChapter = volume.Chapters.OrderBy(x => double.Parse(x.Number), _chapterSortComparer).FirstOrDefault();
+ var firstChapter = volume.Chapters.OrderBy(x => double.Parse(x.Number), _chapterSortComparerForInChapterSorting).FirstOrDefault();
if (firstChapter == null) return;
@@ -132,13 +127,13 @@ namespace API.Services
// If firstCover is null and one volume, the whole series is Chapters under Vol 0.
if (series.Volumes.Count == 1)
{
- coverImage = series.Volumes[0].Chapters.OrderBy(c => double.Parse(c.Number), _chapterSortComparer)
+ coverImage = series.Volumes[0].Chapters.OrderBy(c => double.Parse(c.Number), _chapterSortComparerForInChapterSorting)
.FirstOrDefault(c => !c.IsSpecial)?.CoverImage;
}
if (!HasCoverImage(coverImage))
{
- coverImage = series.Volumes[0].Chapters.OrderBy(c => double.Parse(c.Number), _chapterSortComparer)
+ coverImage = series.Volumes[0].Chapters.OrderBy(c => double.Parse(c.Number), _chapterSortComparerForInChapterSorting)
.FirstOrDefault()?.CoverImage;
}
}
diff --git a/Dockerfile b/Dockerfile
index 496db0002..a1d36ee56 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -26,8 +26,7 @@ RUN apt-get update \
#Creates the data directory
RUN mkdir /kavita/data
-RUN cp /kavita/appsettings.Development.json /kavita/appsettings.json \
- && sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json
+RUN sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json
COPY entrypoint.sh /entrypoint.sh
diff --git a/Kavita.Common/Kavita.Common.csproj b/Kavita.Common/Kavita.Common.csproj
index c1b0f91a7..b10ce71a6 100644
--- a/Kavita.Common/Kavita.Common.csproj
+++ b/Kavita.Common/Kavita.Common.csproj
@@ -4,7 +4,7 @@
net5.0
kavitareader.com
Kavita
- 0.4.4.3
+ 0.4.4.7
en
diff --git a/build.sh b/build.sh
index 9aa3b0239..2e76cfdf0 100755
--- a/build.sh
+++ b/build.sh
@@ -1,8 +1,20 @@
-#! /bin/bash
+#! /bin/bash
set -e
outputFolder='_output'
+CheckRequirements()
+{
+ if ! command -v npm &> /dev/null
+ then
+ echo "Warning!!! npm not found, it is required for building Kavita!"
+ fi
+ if ! command -v dotnet &> /dev/null
+ then
+ echo "Warning!!! dotnet not found, it is required for building Kavita!"
+ fi
+}
+
ProgressStart()
{
echo "Start '$1'"
@@ -55,7 +67,8 @@ BuildUI()
echo 'Building UI'
npm run prod
echo 'Copying back to Kavita wwwroot'
- cp -r dist/* ../../API/wwwroot
+ mkdir -p ../../API/wwwroot
+ cp -R dist/* ../../API/wwwroot
cd ../../ || exit
ProgressEnd 'Building UI'
}
@@ -75,7 +88,7 @@ Package()
dotnet publish -c Release --self-contained --runtime $runtime -o "$lOutputFolder" --framework $framework
echo "Recopying wwwroot due to bug"
- cp -r ./wwwroot/* $lOutputFolder/wwwroot
+ cp -R ./wwwroot/* $lOutputFolder/wwwroot
echo "Copying Install information"
cp ../INSTALL.txt "$lOutputFolder"/README.txt
@@ -84,7 +97,15 @@ Package()
cp ../LICENSE "$lOutputFolder"/LICENSE.txt
echo "Renaming API -> Kavita"
- mv "$lOutputFolder"/API "$lOutputFolder"/Kavita
+ if [ $runtime == "win-x64" ] || [ $runtime == "win-x86" ]
+ then
+ mv "$lOutputFolder"/API.exe "$lOutputFolder"/Kavita.exe
+ else
+ mv "$lOutputFolder"/API "$lOutputFolder"/Kavita
+ fi
+
+ echo "Copying appsettings.json"
+ cp appsettings.Development.json $lOutputFolder/appsettings.json
echo "Creating tar"
cd ../$outputFolder/"$runtime"/
@@ -101,6 +122,7 @@ Package()
RID="$1"
+CheckRequirements
BuildUI
Build
diff --git a/monorepo-build.sh b/monorepo-build.sh
index 826184a04..be452b235 100755
--- a/monorepo-build.sh
+++ b/monorepo-build.sh
@@ -56,6 +56,9 @@ Package()
echo "Show API structure"
find
+
+ echo "Copying appsettings.json"
+ cp appsettings.Development.json $lOutputFolder/appsettings.json
echo "Creating tar"
cd ../$outputFolder/"$runtime"/