Skip to content

Commit f76d765

Browse files
committed
Run using docker fixes
1 parent b5acb87 commit f76d765

File tree

14 files changed

+59
-17
lines changed

14 files changed

+59
-17
lines changed

.github/workflows/docker.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ jobs:
3636
- name: Build and push Docker image
3737
uses: docker/build-push-action@v6
3838
with:
39-
context: ./HueEntertainmentPro/Server/
39+
context: ./
40+
file: ./HueEntertainmentPro/Server/Dockerfile
4041
push: true
4142
tags: michielpost/huelightdj:latest,${{ steps.meta.outputs.tags }}
4243
labels: ${{ steps.meta.outputs.labels }}

HueEntertainmentPro.Database/HueEntertainmentPro.Database.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<TargetFramework>net9.0</TargetFramework>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
7+
<WarningsAsErrors>nullable</WarningsAsErrors>
78
</PropertyGroup>
89

910
<ItemGroup>

HueEntertainmentPro.Database/HueEntertainmentProDbContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected override void OnModelCreating(ModelBuilder builder)
4949
entityBuilder
5050
.Property(propertyInfo.Name)
5151
.HasConversion(
52-
new ValueConverter<Guid?, string>(
52+
new ValueConverter<Guid?, string?>(
5353
v => v.HasValue ? v.Value.ToString() : null,
5454
v => v != null ? Guid.Parse(v) : (Guid?)null))
5555
.UseCollation("NOCASE");

HueEntertainmentPro.Database/Models/ProArea.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class ProArea
77
//public bool IsAlwaysVisible { get; set; }
88
//public bool HideDisconnect { get; set; }
99

10-
public IList<ProAreaBridgeGroup> ProAreaBridgeGroups { get; set; }
10+
public IList<ProAreaBridgeGroup>? ProAreaBridgeGroups { get; set; }
1111

1212
public DateTime CreatedDate { get; set; }
1313
}

HueEntertainmentPro/Client/HueEntertainmentPro.Client.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
<PropertyGroup>
44
<TargetFramework>net9.0</TargetFramework>
55
<Nullable>enable</Nullable>
6+
<WarningsAsErrors>nullable</WarningsAsErrors>
67
<ImplicitUsings>enable</ImplicitUsings>
8+
<InvariantTimezone>false</InvariantTimezone>
9+
<InvariantGlobalization>true</InvariantGlobalization>
710
</PropertyGroup>
811

912
<ItemGroup>

HueEntertainmentPro/Client/Pages/BridgeDetail.razor

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ else
8989

9090
private async Task ShowEditNameDialog()
9191
{
92+
if (bridge == null)
93+
return;
94+
9295
var dialogParameters = new DialogParameters
9396
{
9497
Title = "Edit Bridge Name",
@@ -98,7 +101,7 @@ else
98101
Modal = true
99102
};
100103

101-
var dialog = await DialogService.ShowDialogAsync<EditNameDialog>(bridge.Name, dialogParameters);
104+
var dialog = await DialogService.ShowDialogAsync<EditNameDialog>(bridge.Name ?? string.Empty, dialogParameters);
102105
var result = await dialog.Result;
103106

104107
if (!result.Cancelled && result.Data is string newName && !string.IsNullOrWhiteSpace(newName))

HueEntertainmentPro/Client/Pages/EditNameDialog.razor

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,20 @@
1111

1212
@code {
1313
[CascadingParameter]
14-
private FluentDialog Dialog { get; set; }
14+
private FluentDialog? Dialog { get; set; }
1515

1616
[Parameter]
1717
public string Content { get; set; } = string.Empty;
1818

1919
private async Task Submit()
2020
{
21-
await Dialog.CloseAsync(Content);
21+
if (Dialog != null)
22+
await Dialog.CloseAsync(Content);
2223
}
2324

2425
private async Task Cancel()
2526
{
26-
await Dialog.CancelAsync();
27+
if (Dialog != null)
28+
await Dialog.CancelAsync();
2729
}
2830
}

HueEntertainmentPro/Client/Pages/ProAreaDetail.razor

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@
5353

5454
<h4 style="margin-top: 20px;">Add Entertainment Groups</h4>
5555

56-
var disabled = bridgeOptions.Where(x => x.Disabled).Any();
57-
var enabled = bridgeOptions.Where(x => !x.Disabled).Any();
56+
var disabled = bridgeOptions?.Where(x => x.Disabled).Any() ?? false;
57+
var enabled = bridgeOptions?.Where(x => !x.Disabled).Any() ?? false;
5858

5959
@if (enabled && disabled)
6060
{
@@ -76,7 +76,7 @@
7676
TOption="Option<Bridge>"
7777
OptionText="@(i => i.Text)"
7878
OptionDisabled="@(i => i.Disabled)"
79-
OptionValue="@(i => i.Value.Id.ToString())"
79+
OptionValue="@(i => i.Value?.Id.ToString())"
8080
@bind-SelectedOption="@selectedBridge"
8181
ValueChanged="@(async (string bridge) => await OnBridgeIdSelected(bridge))" />
8282

@@ -91,7 +91,7 @@
9191
{
9292
<FluentDataGrid Items="@entertainmentGroups"
9393
RowSize="@DataGridRowSize.Medium"
94-
TGridItem="SimpleEntertainmentGroup">
94+
TGridItem="SimpleEntertainmentGroup">
9595
<TemplateColumn Title="Action" Align="Align.Start">
9696
<FluentButton @onclick="() => AddToArea(selectedBridge.Value.Id, context.Id, context.Name)">Add</FluentButton>
9797
</TemplateColumn>
@@ -159,6 +159,9 @@ else
159159

160160
private async Task ShowEditNameDialog()
161161
{
162+
if (proArea == null)
163+
return;
164+
162165
var dialogParameters = new DialogParameters
163166
{
164167
Title = "Edit Area Name",
@@ -168,7 +171,7 @@ else
168171
Modal = true
169172
};
170173

171-
var dialog = await DialogService.ShowDialogAsync<EditNameDialog>(proArea.Name, dialogParameters);
174+
var dialog = await DialogService.ShowDialogAsync<EditNameDialog>(proArea.Name ?? string.Empty, dialogParameters);
172175
var result = await dialog.Result;
173176

174177
if (!result.Cancelled && result.Data is string newName && !string.IsNullOrWhiteSpace(newName))
@@ -221,7 +224,10 @@ else
221224
StateHasChanged();
222225

223226
var id = Guid.Parse(bridgeId);
224-
var bridge = bridges.FirstOrDefault(b => b.Id == id);
227+
var bridge = bridges?.FirstOrDefault(b => b.Id == id);
228+
229+
if(bridge == null)
230+
return;
225231

226232
// Load entertainment groups
227233
var result = await HueSetupService.GetEntertainmentGroupsAsync(new HueLightDJ.Services.Interfaces.Models.Requests.HueSetupRequest()
@@ -236,6 +242,9 @@ else
236242

237243
private async Task AddToArea(Guid bridgeId, Guid groupId, string? name)
238244
{
245+
if (proArea == null)
246+
return;
247+
239248
var result = await ProAreaDataService.AddBridgeGroup(new AddBridgeGroupRequest
240249
{
241250
ProAreaId = proArea.Id,

HueEntertainmentPro/Client/Pages/ProAreaPlay.razor

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ else
232232

233233
public async Task Connect()
234234
{
235+
if (config == null)
236+
{
237+
errorMessage = "No entertainment groups connected to this area. Please add some in the area details page.";
238+
return;
239+
}
240+
235241
await LightDJService.Connect(config);
236242
statusModel = await LightDJService.GetStatus();
237243
this.InvokeAsync(() => this.StateHasChanged());

HueEntertainmentPro/Server/Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
1313
ARG BUILD_CONFIGURATION=Release
1414
WORKDIR /src
1515
COPY ["HueEntertainmentPro/Server/HueEntertainmentPro.Server.csproj", "HueEntertainmentPro/Server/"]
16+
COPY ["HueEntertainmentPro/Client/HueEntertainmentPro.Client.csproj", "HueEntertainmentPro/Client/"]
17+
COPY ["HueEntertainmentPro/Shared/HueEntertainmentPro.Shared.csproj", "HueEntertainmentPro/Shared/"]
1618
COPY ["HueEntertainmentPro.Services/HueEntertainmentPro.Services.csproj", "HueEntertainmentPro.Services/"]
1719
COPY ["HueEntertainmentPro.Database/HueEntertainmentPro.Database.csproj", "HueEntertainmentPro.Database/"]
18-
COPY ["HueEntertainmentPro/Shared/HueEntertainmentPro.Shared.csproj", "HueEntertainmentPro/Shared/"]
1920
COPY ["HueLightDJ.Services.Interfaces/HueLightDJ.Services.Interfaces.csproj", "HueLightDJ.Services.Interfaces/"]
2021
COPY ["HueLightDJ.Services/HueLightDJ.Services.csproj", "HueLightDJ.Services/"]
2122
COPY ["HueLightDJ.Effects/HueLightDJ.Effects.csproj", "HueLightDJ.Effects/"]
22-
COPY ["HueEntertainmentPro/Client/HueEntertainmentPro.Client.csproj", "HueEntertainmentPro/Client/"]
2323
RUN dotnet restore "./HueEntertainmentPro/Server/HueEntertainmentPro.Server.csproj"
2424
COPY . .
2525
WORKDIR "/src/HueEntertainmentPro/Server"
@@ -33,5 +33,7 @@ RUN dotnet publish "./HueEntertainmentPro.Server.csproj" -c $BUILD_CONFIGURATION
3333
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
3434
FROM base AS final
3535
WORKDIR /app
36+
RUN mkdir -p /App_Data
37+
RUN chmod -R 777 /App_Data # Grant full permissions
3638
COPY --from=publish /app/publish .
3739
ENTRYPOINT ["dotnet", "HueEntertainmentPro.Server.dll"]

0 commit comments

Comments
 (0)