Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the app itself using Vue to fix accessibility #1388

Merged
merged 20 commits into from
Nov 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
430b86f
chore: Migrate package to use vite for building and use Vue for UI
susnux Oct 11, 2023
5b9f53a
fix: Allow directly navigating to a the filtered app view
susnux Oct 30, 2023
c18aa03
fix: Make the app navigation a second named router-view
susnux Oct 30, 2023
1c2e6ef
fix!: Make the setting for RSS feed to take a real boolean as value
susnux Oct 30, 2023
ad2e221
feat: Implement ActivityFeed view
susnux Nov 5, 2023
a92520c
feat(Activity): Allow to show previews in Activity component
susnux Nov 5, 2023
88787e2
fix: Load and show previews in the Activity app view
susnux Nov 5, 2023
c91d5ea
fix: Adjust icons to Nextcloud default size of 20x20 px
susnux Nov 8, 2023
7472efe
feat: Show loading indicator on activity feed
susnux Nov 8, 2023
29000ec
fix!: Drop legacy scripts
susnux Nov 8, 2023
3e2d69e
chore: Do not introduce too many new stuff, revert css modules to sco…
susnux Nov 8, 2023
a0d917e
fix: Adjusted loading indicator to look like in previous UI version
susnux Nov 8, 2023
2723ddc
fix(Actvitiy): When wraping text keep content within container and do…
susnux Nov 8, 2023
f612016
fix: On Nextcloud GmbH the copyright should be set to author instead …
susnux Nov 8, 2023
58ae402
fix: Allow empty filter and fallback to `all`
susnux Nov 8, 2023
fd0b1bc
fix: Adjust UI for some review comments
susnux Nov 8, 2023
219ec1f
fix(tests): Adjust unit tests
susnux Nov 8, 2023
158bb17
chore(deps): Update to stable nextcloud/vue and nextcloud/dialogs
susnux Nov 8, 2023
b15a83a
fix(tests): Adjust node tests to use vitest
susnux Nov 8, 2023
80d57db
chore: Compile assets
susnux Nov 8, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .eslintrc.js

This file was deleted.

12 changes: 12 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"extends": [
"@nextcloud/eslint-config/typescript"
],
"rules": {
// Allow shallow import of @vue/test-utils in order to be able to use it in
// the src folder
"n/no-unpublished-import": ["error", {
"allowModules": ["@vue/test-utils", "@testing-library/vue", "regenerator-runtime"]
}]
}
}
39 changes: 0 additions & 39 deletions .github/workflows/check-handlebars-templates.yml

This file was deleted.

99 changes: 99 additions & 0 deletions .github/workflows/node-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Node tests

on:
pull_request:
push:
branches:
- main
- master
- stable*

permissions:
contents: read

concurrency:
group: node-tests-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '__tests__/**'
- '__mocks__/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'

test:
runs-on: ubuntu-latest

needs: changes
if: needs.changes.outputs.src != 'false'

steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^9'

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"

- name: Install dependencies & build
env:
CYPRESS_INSTALL_BINARY: 0
run: |
npm ci
npm run build --if-present

- name: Test
run: npm run test --if-present

- name: Test and process coverage
run: npm run test:coverage --if-present

- name: Collect coverage
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
with:
files: ./coverage/lcov.info

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, test]

if: always()

name: test-summary

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.test.result != 'success' }}; then exit 1; fi
43 changes: 0 additions & 43 deletions .github/workflows/node-when-unrelated.yml

This file was deleted.

81 changes: 58 additions & 23 deletions .github/workflows/node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,7 @@

name: Node

on:
pull_request:
paths:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'
push:
branches:
- main
- master
- stable*
on: pull_request

permissions:
contents: read
Expand All @@ -31,30 +15,59 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'

build:
runs-on: ubuntu-latest

name: node
needs: changes
if: needs.changes.outputs.src != 'false'

name: NPM build
steps:
- name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
fallbackNode: '^20'
fallbackNpm: '^9'

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"

- name: Install dependencies & build
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: |
npm ci
npm run build --if-present
Expand All @@ -69,3 +82,25 @@ jobs:
git status
git --no-pager diff
exit 1 # make it red to grab attention

- name: Upload assets for debugging
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
if: failure()
with:
name: assets
path: js/

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, build]

if: always()

# This is the summary, we just avoid to rename it so that branch protection rules still match
name: node

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi
30 changes: 0 additions & 30 deletions .github/workflows/npm-test.yml

This file was deleted.

25 changes: 14 additions & 11 deletions __mocks__/@nextcloud/axios.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
const axios = jest.createMockFromModule('@nextcloud/axios')
import wsData from './activity_ws.json'

const wsData = require('./activity_ws.json')

axios.get = function(url) {
return new Promise((resolve, reject) => {
if (url === 'http://localhost/ocs/v2.php/apps/activity/api/v2/activity/filter') {
resolve({ data: wsData })
} else {
reject(new Error(`URL not defined ${url}`))
}
})
const axios = {
/**
* @param {string} url URL to get
*/
get(url) {
return new Promise((resolve, reject) => {
if (url.endsWith('/ocs/v2.php/apps/activity/api/v2/activity/filter')) {
resolve({ data: wsData })
} else {
reject(new Error(`URL not defined ${url}`))
}
})
},
}

export default axios
Loading