Skip to content
This repository has been archived by the owner on Oct 12, 2023. It is now read-only.

Commit

Permalink
Rewrite extension as v2 (#20)
Browse files Browse the repository at this point in the history
* Minify readme

* Add Angular project

* Scaffold basic extension setup

* Add basic downloads list page

* Retrieve downloads

* Include download list item

* Stylize download item

* Add open in folder feature and styling for aborted

* Add search

* Add observable to download item

* Restructure directory

* Restructure directory

* Fix click trigger area

* Remove obsolete project

* Add icons

* Add settings page

* Create angular.yml

* Add artifact upload

* Add display for no downloads

* Add shields

* Fix no content display behavior

* Extend readme

* Add image to readme

* Add link to extension store

* Limit downloads and show all button

Closes #17

* Adjust aborted file item style

* Update issue templates

* Strike through non-existing download items

* Update README.md
  • Loading branch information
ginomessmer authored Dec 8, 2020
1 parent b3b2352 commit 711753f
Show file tree
Hide file tree
Showing 66 changed files with 14,833 additions and 11,736 deletions.
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single

[*.md]
max_line_length = off
trim_trailing_whitespace = false
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior, e.g.:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Environment (please complete the following information):**
- OS: [e.g. Windows 10]
- Browser [e.g. Edge, Chrome]
- Version and channel [e.g. 22, release, dev, canary]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: suggestion
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered (optional)**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
24 changes: 24 additions & 0 deletions .github/workflows/angular.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Angular CI

on:
push:
branches: [ master, dev, rewrite/* ]
pull_request:
branches: [ master, dev ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
- run: npm ci
- run: npm run build --prod
- name: Upload Build Artifact
uses: actions/upload-artifact@v2
with:
name: drop
path: dist/ng-tmdm
53 changes: 38 additions & 15 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,23 +1,46 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# See http://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/dist
/tmp
/out-tsc
# Only exists if Bazel was run
/bazel-out

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage
# profiling files
chrome-profiler-events*.json
speed-measure-plugin*.json

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# production
/build
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings

npm-debug.log*
yarn-debug.log*
yarn-error.log*
# System Files
.DS_Store
Thumbs.db
1 change: 1 addition & 0 deletions .vscode/snipsnap.code-snippets

Large diffs are not rendered by default.

50 changes: 30 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,37 @@
![TMDM - The Missing Download Menu](./docs/img/social_alpha.png)
Don't you hate it when you download a file and it drops to the lower download bar, but then disappears even though you wanted to click on your download?
[![Angular CI](https://github.com/ginomessmer/tmdm/workflows/Angular%20CI/badge.svg)](https://github.com/ginomessmer/tmdm/actions?query=workflow%3A%22Angular+CI%22)
[![Edge Store](https://img.shields.io/badge/Edge%20Store-v2-blue)](https://microsoftedge.microsoft.com/addons/detail/gjjchbkfeokfaifbcokbndccpogfjfpn)
[![Buy me a coffee](https://img.shields.io/badge/buy%20me%20a%20coffee-%E2%98%95-orange)](https://www.buymeacoffee.com/ginomessmer)

Or how suppose this: Do you also think the downloads overview page is a bit overkill when you want to retrieve your most recent download?

Well, worry no more. This plugin is designed to provide a menu in your Chromium based browser that shows all recent downloads in a non-obstrusive way. Not more or less, it's simple as that.
# The Missing Download Menu

Built with [React](https://create-react-app.dev/) and [FAST-DNA](https://fast.design/).
This browser extension provides a menu in your Chromium based browser that shows all recent downloads in a non-obstrusive way. Not more or less, it's simple as that.

Built with [Angular](https://angular.io), uses [Fluent Icons](https://developer.microsoft.com/en-us/fluentui#/styles/web/icons).

👉 Get it from the [Edge Extensions Store](https://microsoftedge.microsoft.com/addons/detail/gjjchbkfeokfaifbcokbndccpogfjfpn).

![Hero Cover](docs/img/hero.png)

## Features
- Access your downloads from your menu bar
- Automatic dark and light mode
- Integrates well to Edge's design system
- Search
- Also works on Chrome

## Development setup
I recommend to either **using WSL or a Linux environment for development** since the npm scripts are tailered for these environment. You'll need to have yarn installed.

### Debug extension
- First time? Do `yarn` to install all dependencies
- Build the extension with `yarn build`
- Go to Edge -> Extensions -> Turn on Developer Mode
- Hit `Load unpacked` and select to the root of the `./build` folder
- Happy debugging
- [x] Access your downloads from your menu bar
- [x] Automatic dark and light mode
- [x] Integrates well to Edge's design system
- [x] Search
- [x] Also works on Chrome
- [ ] Disables download shelf


---

Do you have any feature requests? Let me know or tweet [@ginomessmer](https://twitter.com/ginomessmer).
Like what you're seeing? Feel free to spread the word and if you're feeling extra generous, [buy me a coffee](https://www.buymeacoffee.com/ginomessmer).

---

## Development Setup
- Install the `@angular/cli` npm package as a global tool: `npm install -g @angular/cli`
- Restore npm packages: `npm i`
- Build and watch the project while you are developing: `ng build --watch`
- Enable developer mode in Microsoft Edge and drop the dist folder to the extensions page
- Happy building
129 changes: 129 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"ng-tmdm": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/ng-tmdm",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": true,
"assets": [
"src/favicon.ico",
"src/manifest.json",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "ng-tmdm:build"
},
"configurations": {
"production": {
"browserTarget": "ng-tmdm:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "ng-tmdm:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"scripts": []
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json",
"e2e/tsconfig.json"
],
"exclude": [
"**/node_modules/**"
]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "ng-tmdm:serve"
},
"configurations": {
"production": {
"devServerTarget": "ng-tmdm:serve:production"
}
}
}
}
}},
"defaultProject": "ng-tmdm"
}
12 changes: 12 additions & 0 deletions browserslist
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries

# You can see what browsers were selected by your queries by running:
# npx browserslist

> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11 # For IE 9-11 support, remove 'not'.
Binary file added docs/img/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions e2e/protractor.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// @ts-check
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

const { SpecReporter } = require('jasmine-spec-reporter');

/**
* @type { import("protractor").Config }
*/
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./src/**/*.e2e-spec.ts'
],
capabilities: {
browserName: 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.json')
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};
Loading

0 comments on commit 711753f

Please sign in to comment.