diff --git a/back/Dockerfile b/back/Dockerfile index c4c5935a..2c0a12d5 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -1,10 +1,11 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0 as transcoder +FROM mcr.microsoft.com/dotnet/sdk:7.0 as transcoder RUN apt-get update && apt-get install -y cmake make libavutil-dev libavcodec-dev libavformat-dev WORKDIR /transcoder COPY src/Kyoo.Transcoder . RUN cmake . && make -j -FROM mcr.microsoft.com/dotnet/sdk:6.0 as builder +FROM mcr.microsoft.com/dotnet/sdk:7.0 as builder +WORKDIR /kyoo COPY Kyoo.sln ./Kyoo.sln COPY nuget.config ./nuget.config @@ -22,7 +23,7 @@ COPY . . ARG VERSION RUN dotnet publish --no-restore -c Release -o /app "-p:Version=${VERSION:-"0.0.0-dev"};SkipTranscoder=true" src/Kyoo.Host -FROM mcr.microsoft.com/dotnet/aspnet:6.0 +FROM mcr.microsoft.com/dotnet/aspnet:7.0 RUN apt-get update && apt-get install -y libavutil-dev libavcodec-dev libavformat-dev curl COPY --from=builder /app /app COPY --from=transcoder /transcoder/libtranscoder.so /app @@ -31,4 +32,3 @@ WORKDIR /kyoo EXPOSE 5000 HEALTHCHECK --interval=5s CMD curl --fail http://localhost:5000/health || exit CMD /app/Kyoo.Host - diff --git a/back/Dockerfile.dev b/back/Dockerfile.dev index 34882c9f..b2d05a93 100644 --- a/back/Dockerfile.dev +++ b/back/Dockerfile.dev @@ -1,11 +1,11 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0 as transcoder +FROM mcr.microsoft.com/dotnet/sdk:7.0 as transcoder # Using the dotnet sdk as a base image to have the same versions of glibc/ffmpeg RUN apt-get update && apt-get install -y gcc cmake make libavutil-dev libavcodec-dev libavformat-dev WORKDIR /transcoder COPY src/Kyoo.Transcoder . RUN cmake . && make -j -FROM mcr.microsoft.com/dotnet/sdk:6.0 +FROM mcr.microsoft.com/dotnet/sdk:7.0 RUN apt-get update && apt-get install -y libavutil-dev libavcodec-dev libavformat-dev curl WORKDIR /app diff --git a/back/src/Directory.Build.props b/back/src/Directory.Build.props index ce7ad5eb..396e44e6 100644 --- a/back/src/Directory.Build.props +++ b/back/src/Directory.Build.props @@ -1,6 +1,6 @@ - net6.0 + net7.0 default Kyoo Kyoo diff --git a/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj b/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj index 828bff86..1179aad2 100644 --- a/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj +++ b/back/src/Kyoo.Abstractions/Kyoo.Abstractions.csproj @@ -6,11 +6,11 @@ - - + + - - - + + + diff --git a/back/src/Kyoo.Authentication/AuthenticationModule.cs b/back/src/Kyoo.Authentication/AuthenticationModule.cs index 5c20521a..cd6f154f 100644 --- a/back/src/Kyoo.Authentication/AuthenticationModule.cs +++ b/back/src/Kyoo.Authentication/AuthenticationModule.cs @@ -64,12 +64,12 @@ namespace Kyoo.Authentication string secret = _configuration.GetValue("AUTHENTICATION_SECRET", AuthenticationOption.DefaultSecret); PermissionOption permissions = new() { - Default = _configuration.GetValue("UNLOGGED_PERMISSIONS", "overall.read").Split(','), - NewUser = _configuration.GetValue("DEFAULT_PERMISSIONS", "overall.read").Split(','), + Default = _configuration.GetValue("UNLOGGED_PERMISSIONS", "overall.read").Split(','), + NewUser = _configuration.GetValue("DEFAULT_PERMISSIONS", "overall.read").Split(','), ApiKeys = _configuration.GetValue("KYOO_APIKEYS", string.Empty).Split(','), }; - services.AddSingleton(permissions); - services.AddSingleton(new AuthenticationOption() + services.AddSingleton(permissions); + services.AddSingleton(new AuthenticationOption() { Secret = secret, Permissions = permissions, diff --git a/back/src/Kyoo.Authentication/Kyoo.Authentication.csproj b/back/src/Kyoo.Authentication/Kyoo.Authentication.csproj index e17c9615..75623da2 100644 --- a/back/src/Kyoo.Authentication/Kyoo.Authentication.csproj +++ b/back/src/Kyoo.Authentication/Kyoo.Authentication.csproj @@ -6,9 +6,9 @@ - + - + diff --git a/back/src/Kyoo.Core/Kyoo.Core.csproj b/back/src/Kyoo.Core/Kyoo.Core.csproj index 7342f457..aeb6531e 100644 --- a/back/src/Kyoo.Core/Kyoo.Core.csproj +++ b/back/src/Kyoo.Core/Kyoo.Core.csproj @@ -13,14 +13,14 @@ - - - + + + - + diff --git a/back/src/Kyoo.Host/Kyoo.Host.csproj b/back/src/Kyoo.Host/Kyoo.Host.csproj index 913cfb69..1f9a8bf7 100644 --- a/back/src/Kyoo.Host/Kyoo.Host.csproj +++ b/back/src/Kyoo.Host/Kyoo.Host.csproj @@ -7,14 +7,14 @@ - - + + - - - - - + + + + + diff --git a/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj b/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj index 4c785d6b..1b8e5ad1 100644 --- a/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj +++ b/back/src/Kyoo.Postgresql/Kyoo.Postgresql.csproj @@ -5,14 +5,13 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + diff --git a/back/src/Kyoo.Postgresql/PostgresContext.cs b/back/src/Kyoo.Postgresql/PostgresContext.cs index 49ecf3ce..7c3bc8f2 100644 --- a/back/src/Kyoo.Postgresql/PostgresContext.cs +++ b/back/src/Kyoo.Postgresql/PostgresContext.cs @@ -48,6 +48,8 @@ namespace Kyoo.Postgresql /// private readonly bool _skipConfigure; + // TOOD: This needs ot be updated but ef-core still does not offer a way to use this. + [Obsolete] static PostgresContext() { NpgsqlConnection.GlobalTypeMapper.MapEnum(); @@ -89,10 +91,7 @@ namespace Kyoo.Postgresql { if (!_skipConfigure) { - if (_connection != null) - optionsBuilder.UseNpgsql(_connection); - else - optionsBuilder.UseNpgsql(); + optionsBuilder.UseNpgsql(); if (_debugMode) optionsBuilder.EnableDetailedErrors().EnableSensitiveDataLogging(); } diff --git a/back/src/Kyoo.Swagger/Kyoo.Swagger.csproj b/back/src/Kyoo.Swagger/Kyoo.Swagger.csproj index e4f5eba4..3d9672a3 100644 --- a/back/src/Kyoo.Swagger/Kyoo.Swagger.csproj +++ b/back/src/Kyoo.Swagger/Kyoo.Swagger.csproj @@ -5,7 +5,7 @@ - + diff --git a/back/src/Kyoo.Swagger/ThumbnailProcessor.cs b/back/src/Kyoo.Swagger/ThumbnailProcessor.cs index dba8d682..591c8cd7 100644 --- a/back/src/Kyoo.Swagger/ThumbnailProcessor.cs +++ b/back/src/Kyoo.Swagger/ThumbnailProcessor.cs @@ -30,7 +30,7 @@ namespace Kyoo.Swagger /// public void Process(SchemaProcessorContext context) { - if (!context.Type.IsAssignableTo(typeof(IThumbnails))) + if (!context.ContextualType.OriginalType.IsAssignableTo(typeof(IThumbnails))) return; foreach ((int _, string imageP) in Images.ImageName) { diff --git a/back/tests/Kyoo.Tests/Kyoo.Tests.csproj b/back/tests/Kyoo.Tests/Kyoo.Tests.csproj index ccef30f7..21c33099 100644 --- a/back/tests/Kyoo.Tests/Kyoo.Tests.csproj +++ b/back/tests/Kyoo.Tests/Kyoo.Tests.csproj @@ -1,28 +1,28 @@ - net6.0 + net7.0 default false - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - - + + + + + - - + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -30,6 +30,6 @@ - + diff --git a/front/apps/web/src/pages/_app.tsx b/front/apps/web/src/pages/_app.tsx index aba8e287..22d1a9b6 100755 --- a/front/apps/web/src/pages/_app.tsx +++ b/front/apps/web/src/pages/_app.tsx @@ -124,9 +124,13 @@ const App = ({ Component, pageProps }: AppProps) => { App.getInitialProps = async (ctx: AppContext) => { const appProps = await NextApp.getInitialProps(ctx); + const Component = ctx.Component as QueryPage; - const getUrl = (ctx.Component as QueryPage).getFetchUrls; - const getLayoutUrl = ((ctx.Component as QueryPage).getLayout as QueryPage)?.getFetchUrls; + const getUrl = Component.getFetchUrls; + const getLayoutUrl = + Component.getLayout && "Layout" in Component.getLayout + ? Component.getLayout.Layout.getFetchUrls + : Component.getLayout?.getFetchUrls; const urls: QueryIdentifier[] = [ ...(getUrl ? getUrl(ctx.router.query as any) : []), diff --git a/front/packages/models/src/query.tsx b/front/packages/models/src/query.tsx index 0f0eeb38..4f5fe001 100644 --- a/front/packages/models/src/query.tsx +++ b/front/packages/models/src/query.tsx @@ -155,8 +155,8 @@ export type QueryIdentifier = { export type QueryPage = ComponentType & { getFetchUrls?: (route: { [key: string]: string }) => QueryIdentifier[]; getLayout?: - | ComponentType<{ page: ReactElement }> - | { Layout: ComponentType<{ page: ReactElement }>; props: object }; + | QueryPage<{ page: ReactElement }> + | { Layout: QueryPage<{ page: ReactElement }>; props: object }; }; const toQueryKey = (query: QueryIdentifier) => {