diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index d474ced8..f42f7197 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -17,7 +17,6 @@ on: jobs: build: if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') - needs: [code-formatting] runs-on: ubuntu-latest defaults: run: @@ -38,7 +37,6 @@ jobs: playwright: if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') - needs: [code-formatting] name: "Playwright Tests" runs-on: ubuntu-latest defaults: @@ -95,104 +93,3 @@ jobs: tags: ${{ steps.meta.outputs.tags }} build-args: | Build_Version: ${{ steps.date.outputs.date }}.${{ github.run_attempt }} - - code-formatting: - # Because the other jobs depend on this one, we need to make sure it runs on the same conditions, - # but we only actually want the steps to run on PR open/sync/reopen. - if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') - runs-on: ubuntu-latest - - steps: - - name: Setup checkout - if: github.event_name == 'pull_request' && github.event.action != 'closed' - uses: actions/checkout@v3 - with: - repository: ${{ github.actor }}/TagzApp - ref: ${{ github.head_ref }} - fetch-depth: 0 - - name: Get git diff - if: github.event_name == 'pull_request' && github.event.action != 'closed' - id: diff - run: | - git remote add upstream https://github.com/FritzAndFriends/TagzApp.git - git fetch upstream main - { - echo 'files<> "$GITHUB_OUTPUT" - - - name: Get changed C# files - if: github.event_name == 'pull_request' && github.event.action != 'closed' - id: changed_cs - run: | - { - echo 'files<> "$GITHUB_OUTPUT" - - name: Add formatting rules to .editorconfig - if: (github.event_name == 'pull_request' && github.event.action != 'closed') && steps.changed_cs.outputs.files != '' - run: | - echo "" >> src/.editorconfig - echo "[*.cs]" >> src/.editorconfig - echo "dotnet_diagnostic.IDE0005.severity = error" >> src/.editorconfig # Remove unnecessary using directives - echo "dotnet_diagnostic.IDE0090.severity = error" >> src/.editorconfig # Simplify new expression - echo "dotnet_diagnostic.IDE0003.severity = error" >> src/.editorconfig # this and Me preferences - echo "dotnet_diagnostic.IDE0009.severity = error" >> src/.editorconfig # this and Me preferences - - name: Setup .NET - if: (github.event_name == 'pull_request' && github.event.action != 'closed') && steps.changed_cs.outputs.files != '' - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 7.0.x - - name: Run dotnet format - if: (github.event_name == 'pull_request' && github.event.action != 'closed') && steps.changed_cs.outputs.files != '' - id: dotnet-format - run: | - echo "Running dotnet format on: ${{ steps.changed_cs.outputs.files }}" - result=$(dotnet format src/TagzApp.sln --verbosity normal --exclude src/TagzApp.Web/Migrations --include ${{ steps.changed_cs.outputs.files }}) - echo "Format result:" - echo "$result" - count=$(echo "$result" | grep -c "Formatted code file" || true) - echo "Number of files Format formatted: $count" - echo "count=$count" >> "$GITHUB_OUTPUT" - - - name: Get changed JS/CSS files - if: github.event_name == 'pull_request' && github.event.action != 'closed' - id: changed_js_css - run: | - { - echo 'files<> "$GITHUB_OUTPUT" - - name: Setup Node - if: (github.event_name == 'pull_request' && github.event.action != 'closed') && steps.changed_js_css.outputs.files != '' - uses: actions/setup-node@v3 - with: - node-version: lts/* - - name: Run prettier - if: (github.event_name == 'pull_request' && github.event.action != 'closed') && steps.changed_js_css.outputs.files != '' - id: prettier - run: | - echo "Running prettier on: ${{ steps.changed_js_css.outputs.files }}" - npm install prettier - result=$(npx prettier --write --list-different ${{ steps.changed_js_css.outputs.files }}) - echo "Prettier result:" - echo "$result" - count=$(echo "$result" | grep -cE "\.(js|css)$" || true) - echo "Number of files Prettier formatted: $count" - echo "count=$count" >> "$GITHUB_OUTPUT" - - - name: Commit if changes - if: (github.event_name == 'pull_request' && github.event.action != 'closed') && steps.prettier.outputs.count > 0 || steps.dotnet-format.outputs.count > 0 - continue-on-error: true # fail-safe to make sure the build and tests run. - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git config user.name "github-actions" - git config user.email "github-actions@github.com" - git add *.cs *.js *.css - echo "$(git status)" - git commit -m "Applying formatting changes through GitHub Actions" - git push diff --git a/.github/workflows/formatting.yml b/.github/workflows/formatting.yml new file mode 100644 index 00000000..803d3be4 --- /dev/null +++ b/.github/workflows/formatting.yml @@ -0,0 +1,95 @@ +name: Code formatting +on: + push: + paths: + - src/**.cs + - src/**.js + - src/**.css +permissions: + contents: write + +jobs: + code-formatting: + if: github.ref != 'refs/heads/main' && github.repository != 'FritzAndFriends/TagzApp' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Get git diff + id: diff + run: | + git remote add upstream https://github.com/FritzAndFriends/TagzApp.git + git fetch upstream main + { + echo 'files<> "$GITHUB_OUTPUT" + + - name: Get changed C# files + id: changed_cs + run: | + { + echo 'files<> "$GITHUB_OUTPUT" + - name: Add formatting rules to .editorconfig + if: steps.changed_cs.outputs.files != '' + run: | + echo "" >> src/.editorconfig + echo "[*.cs]" >> src/.editorconfig + echo "dotnet_diagnostic.IDE0005.severity = error" >> src/.editorconfig # Remove unnecessary using directives + echo "dotnet_diagnostic.IDE0090.severity = error" >> src/.editorconfig # Simplify new expression + echo "dotnet_diagnostic.IDE0003.severity = error" >> src/.editorconfig # this and Me preferences + echo "dotnet_diagnostic.IDE0009.severity = error" >> src/.editorconfig # this and Me preferences + - name: Setup .NET + if: steps.changed_cs.outputs.files != '' + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 7.0.x + - name: Run dotnet format + if: steps.changed_cs.outputs.files != '' + id: dotnet-format + run: | + echo -e "\033[36mRunning dotnet format on:\033[0m ${{ steps.changed_cs.outputs.files }}" + result=$(dotnet format src/TagzApp.sln --verbosity normal --exclude src/**/Migrations/ --include ${{ steps.changed_cs.outputs.files }}) + echo -e "\033[36mdotnet-format result:\033[0m" + echo "$result" + count=$(echo "$result" | grep -c "Formatted code file" || true) + echo -e "\033[36mNumber of files formatted: $count\033[0m" + + - name: Get changed JS/CSS files + id: changed_js_css + run: | + { + echo 'files<> "$GITHUB_OUTPUT" + - name: Setup Node + if: steps.changed_js_css.outputs.files != '' + uses: actions/setup-node@v3 + with: + node-version: lts/* + - name: Run prettier + if: steps.changed_js_css.outputs.files != '' + id: prettier + run: | + echo -e "\033[36mRunning prettier on:\033[0m ${{ steps.changed_js_css.outputs.files }}" + npm install prettier + result=$(npx prettier --write --list-different ${{ steps.changed_js_css.outputs.files }}) + echo -e "\033[36mprettier result:\033[0m" + echo "$result" + count=$(echo "$result" | grep -cE "\.(js|css)$" || true) + echo -e "\033[36mNumber of files formatted: $count\033[0m" + + - name: Commit + continue-on-error: true + run: | + echo -e "\033[33mNote: This step will fail if there are no formatted files, but that's ok.\033[0m" + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git add *.cs *.js *.css + git commit -m "Applying formatting changes through GitHub Actions" + git push \ No newline at end of file diff --git a/src/TagzApp.Providers.TwitchChat/StartTwitchChat.cs b/src/TagzApp.Providers.TwitchChat/StartTwitchChat.cs index e5f2477e..6f922451 100644 --- a/src/TagzApp.Providers.TwitchChat/StartTwitchChat.cs +++ b/src/TagzApp.Providers.TwitchChat/StartTwitchChat.cs @@ -1,41 +1,41 @@ -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using TagzApp.Common.Exceptions; - -namespace TagzApp.Providers.TwitchChat; - -public class StartTwitchChat : IConfigureProvider -{ - - private const string ConfigurationKey = "providers:twitchchat"; - - public IServiceCollection RegisterServices(IServiceCollection services, IConfiguration configuration) - { - - IConfiguration config = null; - try - { - config = configuration.GetSection(ConfigurationKey); - services.Configure(config); - } - catch (Exception ex) - { - - // Was not able to configure the provider - throw new InvalidConfigurationException(ex.Message, ConfigurationKey); - - } - - if (config is null || string.IsNullOrEmpty(config.GetValue("ClientId"))) - { - // No configuration provided, no registration to be added - return services; - } - - services.AddSingleton(); - - - return services; - - } -} +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using TagzApp.Common.Exceptions; + +namespace TagzApp.Providers.TwitchChat; + +public class StartTwitchChat : IConfigureProvider +{ + + private const string _ConfigurationKey = "providers:twitchchat"; + + public IServiceCollection RegisterServices(IServiceCollection services, IConfiguration configuration) + { + + IConfiguration config = null; + try + { + config = configuration.GetSection(_ConfigurationKey); + services.Configure(config); + } + catch (Exception ex) + { + + // Was not able to configure the provider + throw new InvalidConfigurationException(ex.Message, _ConfigurationKey); + + } + + if (config is null || string.IsNullOrEmpty(config.GetValue("ClientId"))) + { + // No configuration provided, no registration to be added + return services; + } + + services.AddSingleton(); + + + return services; + + } +} diff --git a/src/TagzApp.Web/wwwroot/js/masonry.js b/src/TagzApp.Web/wwwroot/js/masonry.js index c6f21a83..a25227a4 100644 --- a/src/TagzApp.Web/wwwroot/js/masonry.js +++ b/src/TagzApp.Web/wwwroot/js/masonry.js @@ -1,25 +1,33 @@ -(function () { - - const m = { - - resizeGridItem: function (item) { - grid = document.getElementById("taggedContent"); - rowHeight = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-auto-rows')); - rowGap = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-row-gap')); - var imageSize = (item.querySelector('.contentcard')?.getBoundingClientRect().height ?? 0) + (item.querySelector('.contentcard') ? 6 : 0); - rowSpan = Math.ceil((item.querySelector('.content').getBoundingClientRect().height + imageSize + 100 + rowGap) / (rowHeight + rowGap)); - item.style.gridRowEnd = "span " + rowSpan; - }, - - resizeAllGridItems: function () { - allItems = document.querySelectorAll("article"); - for (x = 0; x < allItems.length; x++) { - m.resizeGridItem(allItems[x]); - } - } - - }; - - window.Masonry = m; - -})(); \ No newline at end of file +(function () { + const m = { + resizeGridItem: function (item) { + grid = document.getElementById('taggedContent'); + rowHeight = parseInt( + window.getComputedStyle(grid).getPropertyValue('grid-auto-rows'), + ); + rowGap = parseInt( + window.getComputedStyle(grid).getPropertyValue('grid-row-gap'), + ); + var imageSize = + (item.querySelector('.contentcard')?.getBoundingClientRect().height ?? + 0) + (item.querySelector('.contentcard') ? 6 : 0); + rowSpan = Math.ceil( + (item.querySelector('.content').getBoundingClientRect().height + + imageSize + + 100 + + rowGap) / + (rowHeight + rowGap), + ); + item.style.gridRowEnd = 'span ' + rowSpan; + }, + + resizeAllGridItems: function () { + allItems = document.querySelectorAll('article'); + for (x = 0; x < allItems.length; x++) { + m.resizeGridItem(allItems[x]); + } + }, + }; + + window.Masonry = m; +})();