├── docker ├── nextpod.config.php ├── Dockerfile ├── README.md ├── docker-compose.yml ├── nextcloud │ └── sign-app.sh ├── justfile └── entrypoint.sh ├── .eslintrc.js ├── playwright ├── .gitignore ├── Makefile ├── README.md ├── package.json ├── .github │ └── workflows │ │ └── playwright.yml ├── package-lock.json ├── tests │ └── screenshots.spec.ts └── playwright.config.js ├── templates └── main.php ├── babel.config.js ├── img ├── screenshots │ ├── episodes.png │ ├── podcasts.png │ └── episode-description.png └── app.svg ├── stylelint.config.js ├── devenv.yaml ├── jsconfig.json ├── webpack.config.js ├── .envrc ├── .gitignore ├── tests ├── Helper │ ├── Writer │ │ └── TestWriter.php │ └── DatabaseTransaction.php ├── phpunit.xml ├── bootstrap.php ├── Integration │ └── AppTest.php └── Unit │ └── Core │ ├── EpisodeAction │ ├── EpisodeActionTest.php │ └── EpisodeActionReaderTest.php │ ├── SubscriptionChange │ ├── SubscriptionChangeReaderTest.php │ └── SubscriptionChangeRequestParserTest.php │ └── PodcastData │ └── PodcastDataTest.php ├── .php-cs-fixer.dist.php ├── .github └── workflows │ ├── ci-js.yml │ ├── format-check.yml │ ├── create_release.yml │ └── ci.yml ├── .php_cs.dist ├── term.kdl ├── lib ├── Core │ ├── SubscriptionChange │ │ ├── SubscriptionChangesReader.php │ │ ├── SubscriptionChange.php │ │ ├── SubscriptionChangeRequestParser.php │ │ └── SubscriptionChangeSaver.php │ ├── PodcastData │ │ ├── PodcastActionCounts.php │ │ ├── PodcastMetrics.php │ │ ├── PodcastMetricsReader.php │ │ ├── PodcastDataReader.php │ │ └── PodcastData.php │ └── EpisodeAction │ │ ├── EpisodeAction.php │ │ ├── EpisodeActionData.php │ │ ├── EpisodeActionReader.php │ │ ├── EpisodeActionSaver.php │ │ └── EpisodeActionExtraData.php ├── Db │ ├── SubscriptionChange │ │ ├── SubscriptionChangeEntity.php │ │ ├── SubscriptionChangeWriter.php │ │ ├── SubscriptionChangeRepository.php │ │ └── SubscriptionChangeMapper.php │ └── EpisodeAction │ │ ├── EpisodeActionWriter.php │ │ ├── EpisodeActionEntity.php │ │ ├── EpisodeActionRepository.php │ │ └── EpisodeActionMapper.php ├── Sections │ └── NextPodPersonal.php ├── Settings │ └── NextPodPersonal.php └── Controller │ ├── PageController.php │ ├── EpisodeActionController.php │ ├── SubscriptionChangeController.php │ └── PersonalSettingsController.php ├── composer.json ├── src ├── main.js ├── router │ └── index.js ├── components │ ├── SubscriptionListItem.vue │ └── ActionListItem.vue ├── views │ ├── HeaderNavigation.vue │ ├── Podcasts.vue │ └── Actions.vue ├── App.vue └── AppExample.vue ├── vendor ├── autoload.php └── bin │ └── phpunit ├── treefmt.toml ├── appinfo ├── routes.php ├── info.xml └── signature.json ├── devenv.nix ├── package.json ├── docs └── deployment.md ├── justfile ├── devenv.lock ├── README.md └── CHANGELOG.md /docker/nextpod.config.php: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | const babelConfig = require('@nextcloud/babel-config') 2 | 3 | module.exports = babelConfig 4 | -------------------------------------------------------------------------------- /img/screenshots/episodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbek/nextcloud-nextpod/HEAD/img/screenshots/episodes.png -------------------------------------------------------------------------------- /img/screenshots/podcasts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbek/nextcloud-nextpod/HEAD/img/screenshots/podcasts.png -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | const stylelintConfig = require('@nextcloud/stylelint-config') 2 | 3 | module.exports = stylelintConfig 4 | -------------------------------------------------------------------------------- /img/screenshots/episode-description.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pbek/nextcloud-nextpod/HEAD/img/screenshots/episode-description.png -------------------------------------------------------------------------------- /devenv.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=https://devenv.sh/devenv.schema.json 2 | inputs: 3 | nixpkgs: 4 | url: github:cachix/devenv-nixpkgs/rolling 5 | -------------------------------------------------------------------------------- /playwright/Makefile: -------------------------------------------------------------------------------- 1 | 2 | install-playwright: 3 | npm install && npm playwright:install 4 | 5 | screenshots: 6 | npx playwright test tests/screenshots.spec.ts --project=chromium --headed 7 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "jsx": "preserve" 6 | }, 7 | "exclude": ["node_modules"], 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const webpackConfig = require('@nextcloud/webpack-vue-config') 3 | 4 | webpackConfig.entry = { 5 | main: path.join(__dirname, 'src', 'main.js'), 6 | } 7 | 8 | module.exports = webpackConfig 9 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | export DIRENV_WARN_TIMEOUT=20s 2 | 3 | eval "$(devenv direnvrc)" 4 | 5 | # The use_devenv function supports passing flags to the devenv command 6 | # For example: use devenv --impure --option services.postgres.enable:bool true 7 | use devenv 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/* 2 | tests/.phpunit.result.cache 3 | node_modules/ 4 | js/ 5 | /mydb.db* 6 | docker/nextcloud/certificates/* 7 | /*.gz 8 | 9 | # Devenv 10 | .devenv* 11 | devenv.local.nix 12 | 13 | # direnv 14 | .direnv 15 | 16 | # pre-commit 17 | .pre-commit-config.yaml 18 | -------------------------------------------------------------------------------- /playwright/README.md: -------------------------------------------------------------------------------- 1 | # Playwright 2 | 3 | ## Installation / Running 4 | 5 | This needs the docker container from the `docker` folder to be running. 6 | 7 | ```bash 8 | # Install dependencies 9 | make install-playwright 10 | 11 | # Create screenshots 12 | make screenshots 13 | ``` 14 | -------------------------------------------------------------------------------- /tests/Helper/Writer/TestWriter.php: -------------------------------------------------------------------------------- 1 | 2 |34 | 35 | 36 |
37 |