From 0eee0a8a061b9d2145cbc9ae2833caa4cf834277 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Fri, 4 Aug 2017 16:12:28 +0200 Subject: [PATCH 01/43] Remove unnecessary files --- package-lock.json | 607 ---------------------------------------------- package.json | 14 -- 2 files changed, 621 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 339e7c0..0000000 --- a/package-lock.json +++ /dev/null @@ -1,607 +0,0 @@ -{ - "name": "cordova-plugin-today-widget", - "version": "1.0.0", - "lockfileVersion": 1, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "app-root-path": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", - "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", - "dev": true - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-js": { - "version": "https://registry.npmjs.org/base64-js/-/base64-js-1.1.2.tgz", - "integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg=" - }, - "big-integer": { - "version": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.23.tgz", - "integrity": "sha1-6F1QgiDHTj9DpM5y7tUfPaTblNE=" - }, - "bplist-creator": { - "version": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", - "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=" - }, - "bplist-parser": { - "version": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", - "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=" - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true - }, - "ci-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", - "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true - }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", - "dev": true - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cosmiconfig": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-1.1.0.tgz", - "integrity": "sha1-DeoPmATv37kp+7GxiOJVU+oFPTc=", - "dev": true - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true - }, - "date-fns": { - "version": "1.28.5", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.28.5.tgz", - "integrity": "sha1-JXz8RdMi30XvVlhmWWfuhBzXP68=", - "dev": true - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true - }, - "file-match": { - "version": "https://registry.npmjs.org/file-match/-/file-match-1.0.2.tgz", - "integrity": "sha1-ycrSZdLIrfOoFHWw30dYWQafrvc=" - }, - "file-system": { - "version": "https://registry.npmjs.org/file-system/-/file-system-2.2.2.tgz", - "integrity": "sha1-fWWDPjojR9zZVqgTxncVPtPt2Yc=" - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true - }, - "husky": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-0.13.4.tgz", - "integrity": "sha1-SHhcUCjeNFKlHEjBLE+UshJKFAc=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true - }, - "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-ci": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", - "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-yaml": { - "version": "3.8.4", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", - "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", - "dev": true - }, - "lint-staged": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-3.6.1.tgz", - "integrity": "sha1-JEI8i3vZnZbhWs0ayMs5KnjlhYI=", - "dev": true - }, - "listr": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz", - "integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=", - "dev": true - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz", - "integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=", - "dev": true, - "dependencies": { - "indent-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.1.0.tgz", - "integrity": "sha1-CP9DNGAziDmbMp5rlTjcejz13n0=", - "dev": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz", - "integrity": "sha1-RNwBuww0oDxXIVTU0Izemx3FYg8=", - "dev": true - }, - "lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true - }, - "log-update": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", - "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true - }, - "npm-path": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.3.tgz", - "integrity": "sha1-Fc/04ciaONp39W9gVbJPl137K74=", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true - }, - "npm-which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", - "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "ora": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", - "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", - "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true - }, - "path": { - "version": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "pegjs": { - "version": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", - "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true - }, - "plist": { - "version": "https://registry.npmjs.org/plist/-/plist-2.0.1.tgz", - "integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=" - }, - "prettier": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.4.4.tgz", - "integrity": "sha512-GuuPazIvjW1DG26yLQgO+nagmRF/h9M4RaCtZWqu/eFW7csdZkQEwPJUeXX10d+LzmCnR9DuIZndqIOn3p2YoA==", - "dev": true - }, - "process": { - "version": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true - }, - "rxjs": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.1.tgz", - "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-plist": { - "version": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz", - "integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=" - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "staged-git-files": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-0.0.4.tgz", - "integrity": "sha1-15fhtVHKemOd7AI33G60u5vhfTU=", - "dev": true - }, - "stream-buffers": { - "version": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=" - }, - "stream-to-observable": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.1.0.tgz", - "integrity": "sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "symbol-observable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", - "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=", - "dev": true - }, - "util": { - "version": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=" - }, - "utils-extend": { - "version": "https://registry.npmjs.org/utils-extend/-/utils-extend-1.0.8.tgz", - "integrity": "sha1-zP17ZFQPjpDuIe7Fd2nQZRyril8=" - }, - "uuid": { - "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true - }, - "xcode": { - "version": "git+https://github.com/apache/cordova-node-xcode.git#322f304e1aac853867136d866087da29e04a54b2", - "integrity": "sha1-kEUjuipU+41rs12gbYCUoWNLMY4=" - }, - "xmlbuilder": { - "version": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" - }, - "xmldom": { - "version": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } -} diff --git a/package.json b/package.json index c5379e9..8aa9f05 100644 --- a/package.json +++ b/package.json @@ -26,19 +26,5 @@ "path": "^0.12.7", "plist": "^2.1.0", "xcode": "git+https://github.com/apache/cordova-node-xcode.git" - }, - "devDependencies": { - "husky": "^0.13.4", - "lint-staged": "^3.6.0", - "prettier": "^1.4.2" - }, - "scripts": { - "precommit": "lint-staged" - }, - "lint-staged": { - "*.js": [ - "prettier --parser javascript --single-quote --print-width 80 --tab-width 2 --trailing-comma es5 --list-different --write", - "git add" - ] } } From 6be224f865ce219860cd57d54788e5498f39951f Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Fri, 4 Aug 2017 16:40:58 +0200 Subject: [PATCH 02/43] test applinks --- plugin.xml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugin.xml b/plugin.xml index a1a115b..b558baf 100644 --- a/plugin.xml +++ b/plugin.xml @@ -27,7 +27,18 @@ group.__APP_IDENTIFIER__ - + + + applinks:triggi.com + applinks:triggi.onelink.me + + + + + applinks:triggi.com + applinks:triggi.onelink.me + + From eebb6c521c73d25d2911a7a0455cf271415b74df Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Mon, 21 Aug 2017 13:08:20 +0200 Subject: [PATCH 03/43] Change name to parent name rather than widget name --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 486482c..fe2fa48 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -146,7 +146,7 @@ module.exports = function (context) { var placeHolderValues = [ { placeHolder: '__DISPLAY_NAME__', - value: projectPlistJson['CFBundleDisplayName'] + value: projectName }, { placeHolder: '__APP_IDENTIFIER__', From cd56ed21fd9eee01ba4704bc6b96600cbe6faf77 Mon Sep 17 00:00:00 2001 From: danielreus Date: Thu, 2 Aug 2018 01:40:35 +0200 Subject: [PATCH 04/43] Update universal links --- plugin.xml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugin.xml b/plugin.xml index b558baf..1323c32 100644 --- a/plugin.xml +++ b/plugin.xml @@ -29,14 +29,22 @@ - applinks:triggi.com + applinks:share.triggi.com + applinks:share-dev.triggi.com applinks:triggi.onelink.me + applinks:share.olisto.com + applinks:share-dev.olisto.com + applinks:olisto.onelink.me - applinks:triggi.com + applinks:share.triggi.com + applinks:share-dev.triggi.com applinks:triggi.onelink.me + applinks:share.olisto.com + applinks:share-dev.olisto.com + applinks:olisto.onelink.me From 0a8806251c7f80706464b0830c5741411cbf46e3 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Thu, 9 May 2019 15:11:29 +0200 Subject: [PATCH 05/43] Fix import --- hooks/addTodayWidgetToProject.js | 2 +- hooks/fixAppEntitlements.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index fe2fa48..f0065b1 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -3,6 +3,7 @@ var fs = require('fs'); var path = require('path'); var plist = require('plist'); +var xcode = require('xcode'); function log(logString, type) { var prefix; @@ -69,7 +70,6 @@ log( ); module.exports = function (context) { - var xcode = context.requireCordovaModule('xcode'); var Q = context.requireCordovaModule('q'); var deferral = new Q.defer(); diff --git a/hooks/fixAppEntitlements.js b/hooks/fixAppEntitlements.js index 1a6ff87..0a3de99 100644 --- a/hooks/fixAppEntitlements.js +++ b/hooks/fixAppEntitlements.js @@ -2,7 +2,7 @@ var fs = require('fs'); var path = require('path'); -var plist = require('plist'); +var xcode = require('xcode'); function log(logString, type) { var prefix; @@ -57,7 +57,6 @@ log( ); module.exports = function (context) { - var xcode = context.requireCordovaModule('xcode'); var Q = context.requireCordovaModule('q'); var deferral = new Q.defer(); From 778f05f9799af3ab865a3154f7085fe73a0bcb84 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Thu, 9 May 2019 15:49:03 +0200 Subject: [PATCH 06/43] Move Q --- hooks/addTodayWidgetToProject.js | 2 +- hooks/fixAppEntitlements.js | 2 +- package.json | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index f0065b1..486e3e0 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -4,6 +4,7 @@ var fs = require('fs'); var path = require('path'); var plist = require('plist'); var xcode = require('xcode'); +var Q = require('q'); function log(logString, type) { var prefix; @@ -70,7 +71,6 @@ log( ); module.exports = function (context) { - var Q = context.requireCordovaModule('q'); var deferral = new Q.defer(); if (context.opts.cordova.platforms.indexOf('ios') < 0) { diff --git a/hooks/fixAppEntitlements.js b/hooks/fixAppEntitlements.js index 0a3de99..767635b 100644 --- a/hooks/fixAppEntitlements.js +++ b/hooks/fixAppEntitlements.js @@ -3,6 +3,7 @@ var fs = require('fs'); var path = require('path'); var xcode = require('xcode'); +var Q = require('q'); function log(logString, type) { var prefix; @@ -57,7 +58,6 @@ log( ); module.exports = function (context) { - var Q = context.requireCordovaModule('q'); var deferral = new Q.defer(); if (context.opts.cordova.platforms.indexOf('ios') < 0) { diff --git a/package.json b/package.json index 8aa9f05..b01e14a 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "file-system": "^2.2.2", "path": "^0.12.7", "plist": "^2.1.0", + "q": "^1.5.1", "xcode": "git+https://github.com/apache/cordova-node-xcode.git" } } From b896f06af1070de740e6bf35469bcd7ed51d250a Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Thu, 9 May 2019 15:56:49 +0200 Subject: [PATCH 07/43] fix requires --- hooks/addTodayWidgetToProject.js | 2 +- hooks/copyExtensionFolderToIosProjectFolder.js | 2 +- hooks/fixAppEntitlements.js | 2 +- hooks/prerequisites.js | 18 ++++++++++-------- package.json | 2 ++ 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 486e3e0..4fbbd71 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -5,6 +5,7 @@ var path = require('path'); var plist = require('plist'); var xcode = require('xcode'); var Q = require('q'); +var elementTree = require('elementtree'); function log(logString, type) { var prefix; @@ -92,7 +93,6 @@ module.exports = function (context) { } // Get the bundle-id from config.xml - var elementTree = context.requireCordovaModule('elementtree'); var etree = elementTree.parse(contents); var bundleId = etree.getroot().get('id'); log('Bundle id of your host app: ' + bundleId, 'info'); diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index ee05b70..7d90fc4 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -2,6 +2,7 @@ var fs = require('fs'); var path = require('path'); +var Q = require('q'); function log(logString, type) { var prefix; @@ -94,7 +95,6 @@ function getCordovaParameter(variableName, contents) { } module.exports = function(context) { - var Q = context.requireCordovaModule('q'); var deferral = new Q.defer(); var contents = fs.readFileSync( diff --git a/hooks/fixAppEntitlements.js b/hooks/fixAppEntitlements.js index 767635b..64c3681 100644 --- a/hooks/fixAppEntitlements.js +++ b/hooks/fixAppEntitlements.js @@ -4,6 +4,7 @@ var fs = require('fs'); var path = require('path'); var xcode = require('xcode'); var Q = require('q'); +var elementTree = require('elementtree'); function log(logString, type) { var prefix; @@ -74,7 +75,6 @@ module.exports = function (context) { } // Get the bundle-id from config.xml - var elementTree = context.requireCordovaModule('elementtree'); var etree = elementTree.parse(contents); var bundleId = etree.getroot().get('id'); diff --git a/hooks/prerequisites.js b/hooks/prerequisites.js index c9b57d8..0caa0d1 100644 --- a/hooks/prerequisites.js +++ b/hooks/prerequisites.js @@ -1,15 +1,17 @@ -module.exports = function (context) { - var child_process = context.requireCordovaModule('child_process'), - deferral = context.requireCordovaModule('q').defer(); +var Q = require('q'); +var child_process = require('child_process'); -child_process.exec('npm install', {cwd:__dirname}, +module.exports = function () { + var deferral = Q.defer(); + + child_process.exec('npm install', {cwd:__dirname}, function (error) { if (error !== null) { - console.log('exec error: ' + error); - deferral.reject('npm installation failed'); + console.log('exec error: ' + error); + deferral.reject('npm installation failed'); } deferral.resolve(); - }); + }); - return deferral.promise; + return deferral.promise; }; diff --git a/package.json b/package.json index b01e14a..1a4c373 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,8 @@ }, "homepage": "https://github.com/DavidStrausz/cordova-plugin-today-widget", "dependencies": { + "child_process": "^1.0.2", + "elementtree": "^0.1.7", "file-system": "^2.2.2", "path": "^0.12.7", "plist": "^2.1.0", From 2a43396dc15ccfff475f455b5b14715706f1590c Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 14 May 2019 10:43:20 +0200 Subject: [PATCH 08/43] Update swift version --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 4fbbd71..c9dc72d 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -366,7 +366,7 @@ module.exports = function (context) { log('Added entitlements file reference to build settings!', 'info'); } if (projectContainsSwiftFiles) { - buildSettingsObj['SWIFT_VERSION'] = '3.0'; + buildSettingsObj['SWIFT_VERSION'] = '4.2'; buildSettingsObj['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES || 'YES'; log('Added build settings for swift support!', 'info'); } From b05b0e9e9e1642574a47bd599dea9db8bc328fef Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 14 May 2019 12:47:30 +0200 Subject: [PATCH 09/43] Also do replace in config files --- hooks/addTodayWidgetToProject.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index c9dc72d..46fab41 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -188,15 +188,12 @@ module.exports = function (context) { case '.plist': case '.entitlements': case '.xcconfig': - if (fileExtension === '.plist') { - replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); - } + replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); if (fileExtension === '.xcconfig') { addXcconfig = true; xcconfigFileName = file; } if (fileExtension === '.entitlements') { - replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); addEntitlementsFile = true; entitlementsFileName = file; } From 06aa5bf74d4063aae855b1086b02373df79db733 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 14 May 2019 13:00:48 +0200 Subject: [PATCH 10/43] Directly use bundleId --- hooks/addTodayWidgetToProject.js | 2 +- hooks/fixAppEntitlements.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 46fab41..d5b839a 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -150,7 +150,7 @@ module.exports = function (context) { }, { placeHolder: '__APP_IDENTIFIER__', - value: projectPlistJson['CFBundleIdentifier'] + value: bundleId }, { placeHolder: '__BUNDLE_SUFFIX__', diff --git a/hooks/fixAppEntitlements.js b/hooks/fixAppEntitlements.js index 64c3681..d3fa946 100644 --- a/hooks/fixAppEntitlements.js +++ b/hooks/fixAppEntitlements.js @@ -83,7 +83,7 @@ module.exports = function (context) { : path.join(context.opts.projectRoot, 'platforms/ios/'); fs.readdir(iosFolder, function (err, data) { - var projectFolder + var projectFolder; var projectName; var run = function () { var placeHolderValues = [ From 607ca89b8b286c6e076ffe1af3736d945ca289be Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 15:21:43 +0200 Subject: [PATCH 11/43] Include widget --- NowWidget/MainInterface.storyboard | 65 +++++++++++ NowWidget/NowButton.swift | 137 +++++++++++++++++++++++ NowWidget/NowWidget-Info.plist | 31 ++++++ NowWidget/NowWidget.entitlements | 10 ++ NowWidget/NowWidget.xcconfig | 5 + NowWidget/README.md | 3 + NowWidget/TodayViewController.swift | 167 ++++++++++++++++++++++++++++ NowWidget/notification_icon.png | Bin 0 -> 2838 bytes 8 files changed, 418 insertions(+) create mode 100644 NowWidget/MainInterface.storyboard create mode 100644 NowWidget/NowButton.swift create mode 100644 NowWidget/NowWidget-Info.plist create mode 100644 NowWidget/NowWidget.entitlements create mode 100644 NowWidget/NowWidget.xcconfig create mode 100644 NowWidget/README.md create mode 100644 NowWidget/TodayViewController.swift create mode 100644 NowWidget/notification_icon.png diff --git a/NowWidget/MainInterface.storyboard b/NowWidget/MainInterface.storyboard new file mode 100644 index 0000000..e7cd7a2 --- /dev/null +++ b/NowWidget/MainInterface.storyboard @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NowWidget/NowButton.swift b/NowWidget/NowButton.swift new file mode 100644 index 0000000..710e376 --- /dev/null +++ b/NowWidget/NowButton.swift @@ -0,0 +1,137 @@ +// +// NowButton.swift +// NowWidget +// +// Created by Triggi on 24-01-17. +// +// + +import UIKit + +public func drawButton(_ view: UIView, _ position: Int, _ color: UIColor, _ title: String!) -> UIButton! { + let buttonsPerRow = 6.0 + let spacing = 8.0 + + let viewWidth = Double(view.frame.width) + let marginLeft = Double(view.layoutMargins.left) + let marginRight = Double(view.layoutMargins.right) + let marginTop = 15.0 + + let totalSpacing = spacing * (buttonsPerRow - 1) + let containerWidth = viewWidth - marginLeft - marginRight + + let row = floor(Double(position) / buttonsPerRow) + let positionOnRow = Double(position) - (row * buttonsPerRow) + let width = (containerWidth - totalSpacing) / buttonsPerRow + let height = width + let x = marginLeft + (Double(positionOnRow) * width) + (Double(positionOnRow) * spacing) + let y = marginTop + (110 * row) + + let button = UIButton(frame: CGRect(x: x, y: y, width: width, height: height)) + + button.backgroundColor = color + + button.layer.cornerRadius = CGFloat(width / 2) + // button.layer.borderWidth = 1.5 + // button.layer.borderColor = UIColor.whiteColor().CGColor + // button.layer.shadowColor = UIColor.blackColor().CGColor + // button.layer.shadowOffset = CGSizeMake(0, 1) + // button.layer.shadowRadius = 1 + // button.layer.shadowOpacity = 0.5 + // button.layer.shadowPath = UIBezierPath(roundedRect: button.bounds, cornerRadius: CGFloat(width / 2)).CGPath + + button.setImage(UIImage(named: "notification_icon.png")?.maskWithColor(hexStringToUIColor(hex: "#ffffff")), for: UIControl.State()) + button.setTitle(title, for: UIControl.State()) + button.adjustsImageWhenHighlighted = false; + + let iconMargin: CGFloat = 5.0 + let titleSpacing: CGFloat = 5.0 + + let imageSize = button.imageView!.image!.size + let titleEdgeInsets = UIEdgeInsets.init(top: 0.0, left: -imageSize.width, bottom: -(imageSize.height - titleSpacing), right: 0.0) + let imageEdgeInsets = UIEdgeInsets.init(top: iconMargin, left: iconMargin, bottom: iconMargin, right: iconMargin); + + button.imageEdgeInsets = imageEdgeInsets + button.titleEdgeInsets = titleEdgeInsets + + button.titleLabel?.font = UIFont.systemFont(ofSize: 11.0) + button.titleLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail + button.titleLabel?.numberOfLines = 2 + button.titleLabel?.textAlignment = NSTextAlignment.center + button.setTitleColor(primaryColor(), for: UIControl.State()) + + button.tag = position; + + return button +} + +extension UIColor { + func darkerColor(_ amount: CGFloat) -> UIColor { + let rgba = UnsafeMutablePointer.allocate(capacity: 4) + + self.getRed(&rgba[0], green: &rgba[1], blue: &rgba[2], alpha: &rgba[3]) + let darkerColor = UIColor(red: amount*rgba[0], green: amount*rgba[1], blue: amount*rgba[2], alpha: rgba[3]) + + rgba.deinitialize(count:4) + rgba.deallocate() + return darkerColor + } +} + +func hexStringToUIColor (hex:String) -> UIColor { + var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() + + if (cString.hasPrefix("#")) { + cString.remove(at: cString.startIndex) + } + + if ((cString.count) != 6) { + return UIColor.gray + } + + var rgbValue:UInt32 = 0 + Scanner(string: cString).scanHexInt32(&rgbValue) + + return UIColor( + red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0, + green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0, + blue: CGFloat(rgbValue & 0x0000FF) / 255.0, + alpha: CGFloat(1.0) + ) +} + +func primaryColor() -> UIColor { + if #available(iOS 10.0, *) { + return UIColor.darkText + } else { + return UIColor.lightText + } +} + +extension UIImage { + func maskWithColor(_ color: UIColor) -> UIImage? { + + let maskImage = self.cgImage + let width = self.size.width + let height = self.size.height + let bounds = CGRect(x: 0, y: 0, width: width, height: height) + + let colorSpace = CGColorSpaceCreateDeviceRGB() + let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue) + let bitmapContext = CGContext(data: nil, width: Int(width), height: Int(height), bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: bitmapInfo.rawValue) //needs rawValue of bitmapInfo + + bitmapContext!.clip(to: bounds, mask: maskImage!) + bitmapContext!.setFillColor(color.cgColor) + bitmapContext!.fill(bounds) + + //is it nil? + if let cImage = bitmapContext!.makeImage() { + let coloredImage = UIImage(cgImage: cImage) + + return coloredImage + + } else { + return nil + } + } +} diff --git a/NowWidget/NowWidget-Info.plist b/NowWidget/NowWidget-Info.plist new file mode 100644 index 0000000..6e871ea --- /dev/null +++ b/NowWidget/NowWidget-Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Olisto + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + io.triggi.triggi.NowWidget + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 2.24.3 + CFBundleVersion + 0001 + NSExtension + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.widget-extension + + + diff --git a/NowWidget/NowWidget.entitlements b/NowWidget/NowWidget.entitlements new file mode 100644 index 0000000..daba1f8 --- /dev/null +++ b/NowWidget/NowWidget.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.io.triggi.triggi + + + diff --git a/NowWidget/NowWidget.xcconfig b/NowWidget/NowWidget.xcconfig new file mode 100644 index 0000000..2bee8e3 --- /dev/null +++ b/NowWidget/NowWidget.xcconfig @@ -0,0 +1,5 @@ +#include "../cordova/build-extras.xcconfig" + +IPHONEOS_DEPLOYMENT_TARGET = 9.0 +TARGETED_DEVICE_FAMILY = 1,2 +PRODUCT_BUNDLE_IDENTIFIER = io.triggi.triggi.NowWidget diff --git a/NowWidget/README.md b/NowWidget/README.md new file mode 100644 index 0000000..5d2c33d --- /dev/null +++ b/NowWidget/README.md @@ -0,0 +1,3 @@ +# native-ios-widget-triggi-now +Beware, this are the XCode 8+ files of the iOS widget for olisto Now. +In order to deploy this it needs to be ported to [cordova-plugin-native-data](https://gitlab.com/triggi/cordova-plugin-native-data). diff --git a/NowWidget/TodayViewController.swift b/NowWidget/TodayViewController.swift new file mode 100644 index 0000000..fb2c3ff --- /dev/null +++ b/NowWidget/TodayViewController.swift @@ -0,0 +1,167 @@ +// +// TodayViewController.swift +// NowWidget +// +// Created by Triggi on 23-01-17. +// +// + +import UIKit +import NotificationCenter + +class TodayViewController: UIViewController, NCWidgetProviding { + + fileprivate var sharedData: SharedData? + fileprivate var drawnButtons: Array = [] + + @IBOutlet weak var spinner: UIActivityIndicatorView! + @IBOutlet weak var appButton: UIButton! + @IBAction func openApp(_ sender: AnyObject) { + print("Should open Olisto...") + extensionContext?.open(URL(string: "triggi://buttons")!, completionHandler: nil) + } + + func loadData() -> Void { + sharedData = LoadSharedData() + if sharedData != nil && sharedData!.isDefined() { + print("Missing data") + setButtonTitle("Not logged in. Open Olisto to continue.") + } + + if (sharedData!.hasButtons()) { + print("No buttons configured") + setButtonTitle("No buttons configured. Open Olisto to continue.") + } + + NSLog("Data initialized. \nServer baseURL: \n\(sharedData!.baseUrl!), \ntoken: \n\(sharedData!.token!),\nuuid: \n\(sharedData!.phoneId!)"); + } + + func setButtonTitle(_ message: String) { + spinner.stopAnimating() + appButton.setTitle(message, for: UIControl.State()) + } + + @objc func buttonAction(_ sender: UIButton!) { + print("Button \(sender.tag) was pressed") + let url = "\(sharedData!.baseUrl!)/channel/triggi-buttons/push/\(sharedData!.buttons[sender.tag].id)" + postCall(url, token: sharedData!.token!, completionHandler: {(statusCode: Int?) -> () in + print("Call executed with status code: \(statusCode!)") + }) + buttonActivated(sender) + } + + func drawOverlay(_ sender: UIButton!) -> CAShapeLayer { + let circlePath = UIBezierPath(arcCenter: sender.imageView!.center, radius: sender.frame.size.width/2, startAngle: CGFloat(0), endAngle:CGFloat(Double.pi * 2), clockwise: true) + let shapeLayer = CAShapeLayer() + shapeLayer.path = circlePath.cgPath + shapeLayer.fillColor = hexStringToUIColor(hex: sharedData!.buttons[sender.tag].color).darkerColor(0.3).cgColor + shapeLayer.opacity = 0.7 + return shapeLayer + } + + func buttonActivated(_ sender: UIButton!) { + let overlay = drawOverlay(sender) + UIView.transition(with: self.view, duration: 0.5, options: .transitionCrossDissolve, animations: { + sender.layer.addSublayer(overlay) + }, completion: { + (value: Bool) in + UIView.transition(with: self.view, duration: 1.0, options: .transitionCrossDissolve, animations: { + overlay.removeFromSuperlayer() + }, completion: nil) + }) + } + + @objc func touchUp(_ sender: UIButton!) { + sender.backgroundColor = hexStringToUIColor(hex: sharedData!.buttons[sender.tag].color) + sender.setImage(UIImage(named: "notification_icon.png")?.maskWithColor(hexStringToUIColor(hex: "#ffffff")), for: UIControl.State()) + } + + @objc func touchDown(_ sender: UIButton!) { + sender.backgroundColor = hexStringToUIColor(hex: sharedData!.buttons[sender.tag].color).darkerColor(0.7) + sender.setImage(UIImage(named: "notification_icon.png")?.maskWithColor(hexStringToUIColor(hex: "#ffffff").darkerColor(0.7)), for: UIControl.State()) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + func drawButtons() { + print(sharedData!.buttons) + + appButton.isHidden = true + spinner.stopAnimating() + + for button in drawnButtons { + button.removeFromSuperview() + } + drawnButtons = [] + + for (index, element) in sharedData!.buttons.enumerated() { + if (index > 17) { + return + } + print("Item \(index): \(element)") + if let button = drawButton(view, index, hexStringToUIColor(hex: element.color), element.name) { + button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside) + button.addTarget(self, action: #selector(touchUp), for: .touchUpInside) + button.addTarget(self, action: #selector(touchUp), for: .touchDragExit) + button.addTarget(self, action: #selector(touchUp), for: .touchUpOutside) + button.addTarget(self, action: #selector(touchUp), for: .touchCancel) + button.addTarget(self, action: #selector(touchDown), for: .touchDown) + drawnButtons.append(button) + view.addSubview(button) + } + } + } + + @available(iOSApplicationExtension 10.0, *) + func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { + if (sharedData == nil) { + loadData() + } + + if (sharedData == nil || activeDisplayMode == NCWidgetDisplayMode.compact) { + self.preferredContentSize = CGSize(width: 0.0, height: 110.0) + } else if (sharedData!.buttons.count <= 12) { + self.preferredContentSize = CGSize(width: 0.0, height: 220.0) + drawButtons() + } else { + self.preferredContentSize = CGSize(width: 0.0, height: 330.0) + drawButtons() + } + } + + @available(iOSApplicationExtension 10.0, *) + func setWidgetSize() { + if (sharedData!.buttons.count <= 6) { + self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.compact + } else { + self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded + } + } + + override func viewDidLoad() { + super.viewDidLoad() + + loadData() + if (sharedData != nil) { + if #available(iOSApplicationExtension 10.0, *) { + setWidgetSize() + } + drawButtons() + } + } + + func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { + // Perform any setup necessary in order to update the view. + loadData() + if (sharedData != nil) { + if #available(iOSApplicationExtension 10.0, *) { + setWidgetSize() + } + drawButtons() + } + completionHandler(NCUpdateResult.newData) + } +} diff --git a/NowWidget/notification_icon.png b/NowWidget/notification_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7f89148f535befd1008a41f02e516e631fce7c GIT binary patch literal 2838 zcmb7`X&@AO7smfH#tbIhxRS1=hk#)#Uj3JlGQic|dG1gnjR<`UD zm21}s*)r9XrtJI3@_N6&U)~SrJYSyk?RTDYZrfO!@$#JD0RZsguqJkg>iOT|f*%62ljT?$m|6Dty9#w z{2_w7SMhywq7o(Hv8W(W(t`!6tDo$lh~c310h8V5 zls4xy$$M`d4MO0dB}oGmB*PZ1eCs`y&I@ThFP2;sd!%0xeV{REM5kFm4Co6GSGZ?M zf2y@??2kv}2kTy-y1)O*>m}n=WA7>-MT`M`0}?MmbAytbPSEyn?xGB3-|RYBVhG2p z>x{1+HwMrL#~Bo|&pJwyh36*zke)SPeP;VzKo57(VpDEsLL40|e4)e#)F=^$gytFX zq!!`jG-ug1IIXrz0;FZfyFe1p{JIQdd__yxw&u_f;UJW&CmNAjK=u&<(;~EQoJzX4 znc>Lot_l(#Y`I_=L90Tmo?@u_y1_xz?=~KG5hcl{fRHokr2~*%h3%rYhT!g~ zbTdxLSOYVT7}L-ZRe6zbynL~|WHf?6h1Iw)x)Q-FiJoeBjIfsoiYN#XqZ(aCNa{0i=j&*MW~Wyx#BUxeF~t|W)>Q0!qO@% zsvS{`*Cn2VzT%;Af}kHNVN6AqCTQoPl?NW$9|vAL5ZadmdOrncPIM=YrGsfvS{Gy* zN?Q_`WuYqx@qxRUGd9)TNfT6IXN%d!Q3&?QK){?&WzLe|;;(}g=cLTiN=Pe`Ht7H2 z*qcvllQ0|^swGD2x=e12(-x<_(EFTVghTkLf)EHp;S;lK?JB9Gn%n3v0FP+L_`5Y* zs7%PQ@^C`zbL^BW$X5`J10| zjsDehj0ogpYX_u840kiTOho4(79R71*@&=iWWd1Cl4Xoa&t_(C)wN^BLO@Mt_H{qC z__?LGw$%7Q{=Sx%Aexu8TLN0E&|P`>^)tYo?tJhhU?Syjh?B|O5Y&`p4<8$~`qCdT z4@k499lSe*>YPU5nhkp1jRG~0=+n_Lyd|P=1G;j~nKf1&*>8N_0q`$wv#(I7EkerV zWhB_DgIHpiQJ~<_v}wz$O}kHA42qb(e#II`pnp)Ozg4d*DG(KnU@$*tfuKTtDB}oe z@E>2r!=*X|0|7jiH22O5MNSe3PIGgY9;UP*h)C2Dj@|-vvp zb<&ulBs`pET1wGLoiv_si?m$ZnSSLANXx-{GFKfdv2$kd;21Q8Wd68ms6y^eBmqA> zrsL}L(tKKOZ6F&>NfIl~1K6;_FVNJR|A9Q_&tPLtFW)?U4z`Y2MPGtnu~< zi4U(%t#{HI+qtK5S|e^@5X6nPjey(+Io40dND{Mxsq#9hG96Q2&b690fu7+pz*&Z= z;ZV!&y^v4=;#`U&V%~xt@bsi?^stDX9K559+t=-M?Ud=cuw}tHdkRLh?^0EMG%tl7QeyDGFn{@Q zV}STR@Lf0~8bM0rva+F}dj>df>a<;ZdKR~cS>g@V9B#%uwBFnvYb0m*rBFJwH5HUN zYGVEO6|@>^OS5`qvTmp4J39_efPDhE%*@k)Mks{O}yUUoF-R z4C&`dD4h>i$4-rCaLG#{P_5F}4LtBZSiVHa@)443!H8uZA2TXhi?(N4rI=DopDyHU z&nI9ZUyh#7o7()NLBD0rj^zw=i_voi^S>9T0&2pTEKjC2$UoutucTH<>}D}xJ7YR4 z9UX-u|2sWk&zH4hT{`Y(_==&1DQmwpN92=c*P|b{**ARHNcY8G3)0UCGo6?;{_n*0 zhfL$mNHCb@Ov8(AO9*2i5vDBBw_u&Su9lYi7W2mcwio$yh@J>F*<}C529@@Otbm!rd4njm&r>mw^@tQ?c>n$s+ zb(&zJHPBRBHJr@3ilYWb^&G~KWL@T1eUQ;=N#)BbGXAw>bX+LA~Ni3-ptZr zbn()j2e5Wkv`QeSyX2UB*oF{!46WX^Fwpgb6nPkvAGzxt_#r+#P)vyUz-qfUqw&g& zhPWAh=vKMiJGu3N$Rj;|i~fuCDjeXKomom#E3Wo72Ttd}fr1vJkA$nM-wk(h$&R?T zHoOSDbZA+{nNP32iWYGu%M*uW2;bY_b#1oWS$JR z`KYJ*WjH7kDy_vf-)Ppsh26a0B3rz!MdCYUc6iDd8D(8t3Sy@8%7sxy5wAv}3q5;J zOWJssr7s{P-4gUOvf?x^%Cl7Je&z=BsgSgmd$S`uW?>mSmkG|`BS%=}Hl)ez3C#U| zoYAZ+Y1jPS%niJ%NHMi6x0a*U)?X2*pS#C&Sh=aA@5~VVt^zls@G84r^s`Vd>kD?& zj4-okRwk;Js-$ls#h(oCNzWyDk2bXUsi1)4nCtl)XwZ>*J)Y5ECTu=m-pqJEJiU>U zwM=FfLZSxZj5D%HiP4b=w*bwkq_^-bwGMmK#>Ymu$4OADsc~;#xk^4FW!CEMxmP;b zrBs_r?#pLEseO~p`68L!cBt(}{C=@Ql_C(}3Lh1Wiy+u{1@Ehy>mBGI44_wh&r6l` z2D!M#1vz$I=$rG9KZK|MFK_G2)_q(Z20c_Bz#DCwRQ&;Y(rwqkcDnqHzgNd(Q%Ibu z=lDv(zM>jQW&2~_ip+{I(5mz0ZH(a8-q*Os(To)LLyAm3YX&V!Mr9GK5$H7^jdI*}(>D`BhD5pYe$s?MC!it5b2X zk$LNIF%-FTsyVlGr2kj)7z*qsq<)XIq!Ra3f*R%iaN*~wPy%+k4B^w(#@mQ<4Hj(i z#(e5GYPMoR(aV5)V`AX>F{cH#JP5F;3vJ~l8YPYTQo&Q@_nj+pfQR!EIRRSOV1n!> v1BE}Gf;YK|lLE@3A<#k_&-#h~Z)j<@55mr}^%od8{C5G))Y_!V$TRsr8*V-M literal 0 HcmV?d00001 From 6ad4c62648da158576a2b02e11d72854beb53927 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 15:42:27 +0200 Subject: [PATCH 12/43] add native data dependency --- plugin.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugin.xml b/plugin.xml index 1323c32..225f6da 100644 --- a/plugin.xml +++ b/plugin.xml @@ -14,7 +14,9 @@ - + + + From efe2fcdbe747ffd1fca89c24eab512ac2ddacecb Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 16:41:37 +0200 Subject: [PATCH 13/43] Add dependency path --- hooks/addTodayWidgetToProject.js | 85 ++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 38 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index d5b839a..6ce7a85 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -87,6 +87,7 @@ module.exports = function (context) { var WIDGET_NAME = getCordovaParameter("WIDGET_NAME", contents); var WIDGET_BUNDLE_SUFFIX = getCordovaParameter("WIDGET_BUNDLE_SUFFIX", contents); var ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = getCordovaParameter("ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", contents); + var DEPENDENCY_PATH = getCordovaParameter("DEPENDENCY_PATH", contents); if (contents) { contents = contents.substring(contents.indexOf('<')); @@ -130,6 +131,7 @@ module.exports = function (context) { log('Your widget bundle id will be: ' + bundleId + '.' + widgetBundleId, 'info'); var widgetFolder = path.join(iosFolder, widgetName); + var dependencyFolder = path.join(iosFolder, projectName, DEPENDENCY_PATH); var sourceFiles = []; var resourceFiles = []; var configFiles = []; @@ -166,45 +168,52 @@ module.exports = function (context) { } ]; - fs.readdirSync(widgetFolder).forEach(file => { - if (!/^\..*/.test(file)) { - // Ignore junk files like .DS_Store - var fileExtension = path.extname(file); - switch (fileExtension) { - // Swift and Objective-C source files which need to be compiled - case '.swift': - projectContainsSwiftFiles = true; - sourceFiles.push(file); - break; - case '.h': - case '.m': - if (file === 'Bridging-Header.h' || file === 'Header.h') { - addBridgingHeader = true; - bridgingHeaderName = file; - } - sourceFiles.push(file); - break; - // Configuration files - case '.plist': - case '.entitlements': - case '.xcconfig': - replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); - if (fileExtension === '.xcconfig') { - addXcconfig = true; - xcconfigFileName = file; - } - if (fileExtension === '.entitlements') { - addEntitlementsFile = true; - entitlementsFileName = file; - } - configFiles.push(file); - break; - // Resources like storyboards, images, fonts, etc. - default: - resourceFiles.push(file); - break; + var folders = [widgetFolder]; + if (dependencyPath) { + folders.push(dependencyFolder); + } + + folders.forEach(folder => { + fs.readdirSync(folder).forEach(file => { + if (!/^\..*/.test(file)) { + // Ignore junk files like .DS_Store + var fileExtension = path.extname(file); + switch (fileExtension) { + // Swift and Objective-C source files which need to be compiled + case '.swift': + projectContainsSwiftFiles = true; + sourceFiles.push(file); + break; + case '.h': + case '.m': + if (file === 'Bridging-Header.h' || file === 'Header.h') { + addBridgingHeader = true; + bridgingHeaderName = file; + } + sourceFiles.push(file); + break; + // Configuration files + case '.plist': + case '.entitlements': + case '.xcconfig': + replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); + if (fileExtension === '.xcconfig') { + addXcconfig = true; + xcconfigFileName = file; + } + if (fileExtension === '.entitlements') { + addEntitlementsFile = true; + entitlementsFileName = file; + } + configFiles.push(file); + break; + // Resources like storyboards, images, fonts, etc. + default: + resourceFiles.push(file); + break; + } } - } + }); }); log('Found following files in your widget folder:', 'info'); From 62de01d1dee37172411360f68972794d38d21056 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 16:47:13 +0200 Subject: [PATCH 14/43] typo --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 6ce7a85..b4fc442 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -169,7 +169,7 @@ module.exports = function (context) { ]; var folders = [widgetFolder]; - if (dependencyPath) { + if (DEPENDENCY_PATH) { folders.push(dependencyFolder); } From da95054a53345137aebb86e0d06c34e2932f31f3 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 17:06:01 +0200 Subject: [PATCH 15/43] Allow specific files --- hooks/addTodayWidgetToProject.js | 97 +++++++++++++++++--------------- 1 file changed, 51 insertions(+), 46 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index b4fc442..bd9b294 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -87,7 +87,7 @@ module.exports = function (context) { var WIDGET_NAME = getCordovaParameter("WIDGET_NAME", contents); var WIDGET_BUNDLE_SUFFIX = getCordovaParameter("WIDGET_BUNDLE_SUFFIX", contents); var ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = getCordovaParameter("ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", contents); - var DEPENDENCY_PATH = getCordovaParameter("DEPENDENCY_PATH", contents); + var DEPENDENCIES = getCordovaParameter("DEPENDENCIES", contents); if (contents) { contents = contents.substring(contents.indexOf('<')); @@ -130,8 +130,10 @@ module.exports = function (context) { var widgetBundleId = WIDGET_BUNDLE_SUFFIX || 'widget'; log('Your widget bundle id will be: ' + bundleId + '.' + widgetBundleId, 'info'); + var dependencies = DEPENDENCIES ? dependencies.split(',') : []; + log('External dependencies are: ' + dependencies, 'info'); + var widgetFolder = path.join(iosFolder, widgetName); - var dependencyFolder = path.join(iosFolder, projectName, DEPENDENCY_PATH); var sourceFiles = []; var resourceFiles = []; var configFiles = []; @@ -168,54 +170,57 @@ module.exports = function (context) { } ]; - var folders = [widgetFolder]; - if (DEPENDENCY_PATH) { - folders.push(dependencyFolder); + function handleFile(file) { + if (!/^\..*/.test(file)) { + // Ignore junk files like .DS_Store + var fileExtension = path.extname(file); + switch (fileExtension) { + // Swift and Objective-C source files which need to be compiled + case '.swift': + projectContainsSwiftFiles = true; + sourceFiles.push(file); + break; + case '.h': + case '.m': + if (file === 'Bridging-Header.h' || file === 'Header.h') { + addBridgingHeader = true; + bridgingHeaderName = file; + } + sourceFiles.push(file); + break; + // Configuration files + case '.plist': + case '.entitlements': + case '.xcconfig': + replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); + if (fileExtension === '.xcconfig') { + addXcconfig = true; + xcconfigFileName = file; + } + if (fileExtension === '.entitlements') { + addEntitlementsFile = true; + entitlementsFileName = file; + } + configFiles.push(file); + break; + // Resources like storyboards, images, fonts, etc. + default: + resourceFiles.push(file); + break; + } + } } - folders.forEach(folder => { - fs.readdirSync(folder).forEach(file => { - if (!/^\..*/.test(file)) { - // Ignore junk files like .DS_Store - var fileExtension = path.extname(file); - switch (fileExtension) { - // Swift and Objective-C source files which need to be compiled - case '.swift': - projectContainsSwiftFiles = true; - sourceFiles.push(file); - break; - case '.h': - case '.m': - if (file === 'Bridging-Header.h' || file === 'Header.h') { - addBridgingHeader = true; - bridgingHeaderName = file; - } - sourceFiles.push(file); - break; - // Configuration files - case '.plist': - case '.entitlements': - case '.xcconfig': - replacePlaceholdersInPlist(path.join(widgetFolder, file), placeHolderValues); - if (fileExtension === '.xcconfig') { - addXcconfig = true; - xcconfigFileName = file; - } - if (fileExtension === '.entitlements') { - addEntitlementsFile = true; - entitlementsFileName = file; - } - configFiles.push(file); - break; - // Resources like storyboards, images, fonts, etc. - default: - resourceFiles.push(file); - break; - } - } - }); + dependencies.forEach(file => { + handleFile(path.join(iosFolder, projectName, file)); + }); + + fs.readdirSync(widgetFolder).forEach(file => { + handleFile(file); }); + + log('Found following files in your widget folder:', 'info'); console.log('Source-files: '); sourceFiles.forEach(file => { From 9a6b7149bc0147228fda5a09977f53d42ef7be14 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 17:13:10 +0200 Subject: [PATCH 16/43] Update addTodayWidgetToProject.js --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index bd9b294..ad2091e 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -212,7 +212,7 @@ module.exports = function (context) { } dependencies.forEach(file => { - handleFile(path.join(iosFolder, projectName, file)); + handleFile(path.join(iosFolder, projectName, file.trim())); }); fs.readdirSync(widgetFolder).forEach(file => { From acf4a99f31ceec6723d8070ef8c7a2e42b70ddad Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 17:15:43 +0200 Subject: [PATCH 17/43] oops --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index ad2091e..fd0aead 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -130,7 +130,7 @@ module.exports = function (context) { var widgetBundleId = WIDGET_BUNDLE_SUFFIX || 'widget'; log('Your widget bundle id will be: ' + bundleId + '.' + widgetBundleId, 'info'); - var dependencies = DEPENDENCIES ? dependencies.split(',') : []; + var dependencies = DEPENDENCIES ? DEPENDENCIES.split(',') : []; log('External dependencies are: ' + dependencies, 'info'); var widgetFolder = path.join(iosFolder, widgetName); From 992a1f9f97f57566b191ef49f45e0b63aa61155c Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 27 Aug 2019 17:24:02 +0200 Subject: [PATCH 18/43] Update addTodayWidgetToProject.js --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index fd0aead..599091d 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -212,7 +212,7 @@ module.exports = function (context) { } dependencies.forEach(file => { - handleFile(path.join(iosFolder, projectName, file.trim())); + handleFile(file.trim()); }); fs.readdirSync(widgetFolder).forEach(file => { From 41985aa91e7042c34cb99d0c58b9222e39a8d7bb Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 10:56:00 +0200 Subject: [PATCH 19/43] Redo placeholders --- NowWidget/NowWidget-Info.plist | 8 ++++---- NowWidget/NowWidget.entitlements | 2 +- NowWidget/NowWidget.xcconfig | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/NowWidget/NowWidget-Info.plist b/NowWidget/NowWidget-Info.plist index 6e871ea..b9e6261 100644 --- a/NowWidget/NowWidget-Info.plist +++ b/NowWidget/NowWidget-Info.plist @@ -5,11 +5,11 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - Olisto + __DISPLAY_NAME__ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - io.triggi.triggi.NowWidget + __APP_IDENTIFIER__.__BUNDLE_SUFFIX__ CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2.24.3 + __BUNDLE_SHORT_VERSION_STRING__ CFBundleVersion - 0001 + __BUNDLE_VERSION__ NSExtension NSExtensionMainStoryboard diff --git a/NowWidget/NowWidget.entitlements b/NowWidget/NowWidget.entitlements index daba1f8..8539e7d 100644 --- a/NowWidget/NowWidget.entitlements +++ b/NowWidget/NowWidget.entitlements @@ -4,7 +4,7 @@ com.apple.security.application-groups - group.io.triggi.triggi + group.__APP_IDENTIFIER__ diff --git a/NowWidget/NowWidget.xcconfig b/NowWidget/NowWidget.xcconfig index 2bee8e3..066d5f7 100644 --- a/NowWidget/NowWidget.xcconfig +++ b/NowWidget/NowWidget.xcconfig @@ -2,4 +2,4 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0 TARGETED_DEVICE_FAMILY = 1,2 -PRODUCT_BUNDLE_IDENTIFIER = io.triggi.triggi.NowWidget +PRODUCT_BUNDLE_IDENTIFIER = __APP_IDENTIFIER__.__BUNDLE_SUFFIX__ From 3ec9f5301c3b0d88cc07d365962615b1dd32da0f Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 13:54:27 +0200 Subject: [PATCH 20/43] Copy dependencies --- hooks/addTodayWidgetToProject.js | 2 +- .../copyExtensionFolderToIosProjectFolder.js | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 599091d..c1972a7 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -212,7 +212,7 @@ module.exports = function (context) { } dependencies.forEach(file => { - handleFile(file.trim()); + handleFile(path.basename(file.trim())); }); fs.readdirSync(widgetFolder).forEach(file => { diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index 7d90fc4..2be9595 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -126,7 +126,10 @@ module.exports = function(context) { // Get the widget name and location from the parameters or the config file var WIDGET_NAME = getCordovaParameter("WIDGET_NAME", contents); var WIDGET_PATH = getCordovaParameter("WIDGET_PATH", contents); + var DEPENDENCIES = getCordovaParameter("DEPENDENCIES", contents); + var widgetName = WIDGET_NAME || projectName + ' Widget'; + var dependencies = DEPENDENCIES ? DEPENDENCIES.split(',') : []; if (WIDGET_PATH) { srcFolder = path.join( @@ -151,9 +154,24 @@ module.exports = function(context) { // Copy widget folder copyFolderRecursiveSync( srcFolder, - path.join(context.opts.projectRoot, 'platforms', 'ios') + iosFolder ); - log('Successfully copied Widget folder!', 'success'); + + log('Successfully copied widget folder!', 'success'); + + + if(DEPENDENCIES) { + dependencies.forEach(path => { + var srcFile = path.join( + iosFolder, + path + ); + + copyFileSync(srcFile, iosFolder); + }) + } + + log('Successfully copied dependency files!', 'success'); console.log('\x1b[0m'); // reset deferral.resolve(); From 823b29d6327c4b27d51cd026d4f8da671eda111e Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 14:12:40 +0200 Subject: [PATCH 21/43] rename --- hooks/copyExtensionFolderToIosProjectFolder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index 2be9595..d042508 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -161,10 +161,10 @@ module.exports = function(context) { if(DEPENDENCIES) { - dependencies.forEach(path => { + dependencies.forEach(file => { var srcFile = path.join( iosFolder, - path + file ); copyFileSync(srcFile, iosFolder); From 561cfc908f835e55a0799fb63a3ec261d48b3dd2 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 14:23:56 +0200 Subject: [PATCH 22/43] Add project name --- hooks/copyExtensionFolderToIosProjectFolder.js | 1 + 1 file changed, 1 insertion(+) diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index d042508..87c3fbf 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -164,6 +164,7 @@ module.exports = function(context) { dependencies.forEach(file => { var srcFile = path.join( iosFolder, + projectName, file ); From edc7236e41c1f28d8c911db28072cf45a4bbb04e Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 14:26:03 +0200 Subject: [PATCH 23/43] trim --- hooks/copyExtensionFolderToIosProjectFolder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index 87c3fbf..1cafac5 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -165,7 +165,7 @@ module.exports = function(context) { var srcFile = path.join( iosFolder, projectName, - file + file.trim() ); copyFileSync(srcFile, iosFolder); From b5490b72c6a8160fa6d9e1e0c0f2f433016bff2c Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 14:41:41 +0200 Subject: [PATCH 24/43] Correct destination folder --- hooks/copyExtensionFolderToIosProjectFolder.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index 1cafac5..7405661 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -168,11 +168,13 @@ module.exports = function(context) { file.trim() ); - copyFileSync(srcFile, iosFolder); - }) + var destFolder = path.join(iosFolder, widgetName); + + copyFileSync(srcFile, destFolder); + }); + log('Successfully copied dependency files!', 'success'); } - log('Successfully copied dependency files!', 'success'); console.log('\x1b[0m'); // reset deferral.resolve(); From 69296543d9845542dacb8909d908618a1ce9d96e Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 15:09:59 +0200 Subject: [PATCH 25/43] Dont double add dependencies --- hooks/addTodayWidgetToProject.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index c1972a7..cbd133a 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -87,7 +87,6 @@ module.exports = function (context) { var WIDGET_NAME = getCordovaParameter("WIDGET_NAME", contents); var WIDGET_BUNDLE_SUFFIX = getCordovaParameter("WIDGET_BUNDLE_SUFFIX", contents); var ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = getCordovaParameter("ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", contents); - var DEPENDENCIES = getCordovaParameter("DEPENDENCIES", contents); if (contents) { contents = contents.substring(contents.indexOf('<')); @@ -130,9 +129,6 @@ module.exports = function (context) { var widgetBundleId = WIDGET_BUNDLE_SUFFIX || 'widget'; log('Your widget bundle id will be: ' + bundleId + '.' + widgetBundleId, 'info'); - var dependencies = DEPENDENCIES ? DEPENDENCIES.split(',') : []; - log('External dependencies are: ' + dependencies, 'info'); - var widgetFolder = path.join(iosFolder, widgetName); var sourceFiles = []; var resourceFiles = []; @@ -211,10 +207,6 @@ module.exports = function (context) { } } - dependencies.forEach(file => { - handleFile(path.basename(file.trim())); - }); - fs.readdirSync(widgetFolder).forEach(file => { handleFile(file); }); From 1d489f339ce6876b6aa7108eafbd782ee33b3cda Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Wed, 28 Aug 2019 15:27:44 +0200 Subject: [PATCH 26/43] Add log inidication --- hooks/addTodayWidgetToProject.js | 2 +- hooks/copyExtensionFolderToIosProjectFolder.js | 2 +- hooks/fixAppEntitlements.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index cbd133a..6f64b82 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -19,7 +19,7 @@ function log(logString, type) { '\x1b[40m' + '\x1b[37m' + '\x1b[2m' + - '☝️ [INFO] ' + + '☝️ Widget [INFO] ' + '\x1b[0m\x1b[40m' + '\x1b[33m'; // fgWhite, dim, reset, bgBlack, fgYellow break; diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index 7405661..f6d6699 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -16,7 +16,7 @@ function log(logString, type) { '\x1b[40m' + '\x1b[37m' + '\x1b[2m' + - '☝️ [INFO] ' + + '☝️ Widget [INFO] ' + '\x1b[0m\x1b[40m' + '\x1b[33m'; // fgWhite, dim, reset, bgBlack, fgYellow break; diff --git a/hooks/fixAppEntitlements.js b/hooks/fixAppEntitlements.js index d3fa946..5323bc2 100644 --- a/hooks/fixAppEntitlements.js +++ b/hooks/fixAppEntitlements.js @@ -18,7 +18,7 @@ function log(logString, type) { '\x1b[40m' + '\x1b[37m' + '\x1b[2m' + - '☝️ [INFO] ' + + '☝️ Widget [INFO] ' + '\x1b[0m\x1b[40m' + '\x1b[33m'; // fgWhite, dim, reset, bgBlack, fgYellow break; From 17ce4b452c5221e3faee07a365b762684fc5ce51 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Mon, 2 Sep 2019 12:23:04 +0200 Subject: [PATCH 27/43] Use widget name --- hooks/addTodayWidgetToProject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index 6f64b82..d9e718f 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -358,7 +358,7 @@ module.exports = function (context) { var buildSettingsObj = configurations[key].buildSettings; if (typeof buildSettingsObj['PRODUCT_NAME'] !== 'undefined') { var productName = buildSettingsObj['PRODUCT_NAME']; - if (productName.indexOf('Widget') >= 0) { + if (productName.indexOf(widgetName) >= 0) { if (addXcconfig) { configurations[key].baseConfigurationReference = xcconfigReference + ' /* ' + xcconfigFileName + ' */'; From ee48f1cc1817c060d8eea3eab5413d5962c46e8f Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Mon, 2 Sep 2019 12:49:58 +0200 Subject: [PATCH 28/43] add prefix --- hooks/copyExtensionFolderToIosProjectFolder.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index f6d6699..e794e6a 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -48,7 +48,7 @@ log( ); // http://stackoverflow.com/a/26038979/5930772 -var copyFileSync = function(source, target) { +var copyFileSync = function(source, target, prefix) { var targetFile = target; // If target is a directory a new file with the same name will be created @@ -58,7 +58,12 @@ var copyFileSync = function(source, target) { } } - fs.writeFileSync(targetFile, fs.readFileSync(source)); + if (ref) { + var prefixedTarget = path.join(path.dirname(targetFile), prefix + '-' + path.basename(targetFile)); + fs.writeFileSync(prefixedTarget, fs.readFileSync(source)); + } else { + fs.writeFileSync(targetFile, fs.readFileSync(source)); + } }; var copyFolderRecursiveSync = function(source, target) { var files = []; @@ -170,7 +175,7 @@ module.exports = function(context) { var destFolder = path.join(iosFolder, widgetName); - copyFileSync(srcFile, destFolder); + copyFileSync(srcFile, destFolder, widgetName); }); log('Successfully copied dependency files!', 'success'); } From ef4119f714bd4ce7ce8ebb8346d58b2cc44fce71 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Mon, 2 Sep 2019 13:31:43 +0200 Subject: [PATCH 29/43] ref -> prefix --- hooks/copyExtensionFolderToIosProjectFolder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index e794e6a..6e53f00 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -58,7 +58,7 @@ var copyFileSync = function(source, target, prefix) { } } - if (ref) { + if (prefix) { var prefixedTarget = path.join(path.dirname(targetFile), prefix + '-' + path.basename(targetFile)); fs.writeFileSync(prefixedTarget, fs.readFileSync(source)); } else { From b29eee4c85c4519670152ae61642cc78d1cdbee1 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Mon, 2 Sep 2019 13:39:59 +0200 Subject: [PATCH 30/43] Update TodayViewController.swift --- NowWidget/TodayViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NowWidget/TodayViewController.swift b/NowWidget/TodayViewController.swift index fb2c3ff..c0f8c30 100644 --- a/NowWidget/TodayViewController.swift +++ b/NowWidget/TodayViewController.swift @@ -22,7 +22,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { } func loadData() -> Void { - sharedData = LoadSharedData() + sharedData = loadSharedData() if sharedData != nil && sharedData!.isDefined() { print("Missing data") setButtonTitle("Not logged in. Open Olisto to continue.") From 49d784993294d69591f31dfbd1674a3b06a44de2 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Thu, 5 Sep 2019 12:17:19 +0200 Subject: [PATCH 31/43] Review comments --- hooks/addTodayWidgetToProject.js | 5 +---- hooks/copyExtensionFolderToIosProjectFolder.js | 9 +++------ 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/hooks/addTodayWidgetToProject.js b/hooks/addTodayWidgetToProject.js index d9e718f..a26a812 100755 --- a/hooks/addTodayWidgetToProject.js +++ b/hooks/addTodayWidgetToProject.js @@ -207,10 +207,7 @@ module.exports = function (context) { } } - fs.readdirSync(widgetFolder).forEach(file => { - handleFile(file); - }); - + fs.readdirSync(widgetFolder).forEach(handleFile); log('Found following files in your widget folder:', 'info'); diff --git a/hooks/copyExtensionFolderToIosProjectFolder.js b/hooks/copyExtensionFolderToIosProjectFolder.js index 6e53f00..5178ddb 100644 --- a/hooks/copyExtensionFolderToIosProjectFolder.js +++ b/hooks/copyExtensionFolderToIosProjectFolder.js @@ -58,12 +58,9 @@ var copyFileSync = function(source, target, prefix) { } } - if (prefix) { - var prefixedTarget = path.join(path.dirname(targetFile), prefix + '-' + path.basename(targetFile)); - fs.writeFileSync(prefixedTarget, fs.readFileSync(source)); - } else { - fs.writeFileSync(targetFile, fs.readFileSync(source)); - } + var dest = prefix ? path.join(path.dirname(targetFile), prefix + '-' + path.basename(targetFile)) : targetFile; + fs.writeFileSync(dest, fs.readFileSync(source)); + }; var copyFolderRecursiveSync = function(source, target) { var files = []; From 53dcbc010c414f6cfd145f4600b40da09bdc33e9 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Tue, 10 Sep 2019 15:41:07 +0200 Subject: [PATCH 32/43] add dev language --- NowWidget/NowWidget-Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NowWidget/NowWidget-Info.plist b/NowWidget/NowWidget-Info.plist index b9e6261..323449e 100644 --- a/NowWidget/NowWidget-Info.plist +++ b/NowWidget/NowWidget-Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + en_US CFBundleDisplayName __DISPLAY_NAME__ CFBundleExecutable From 1c879cca29ca574cf49993e28e97cd7708afea27 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Mon, 30 Sep 2019 16:06:14 +0200 Subject: [PATCH 33/43] Fix Title on ios 13 --- NowWidget/NowButton.swift | 12 ++++++++++-- NowWidget/TodayViewController.swift | 10 ++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/NowWidget/NowButton.swift b/NowWidget/NowButton.swift index 710e376..7252d82 100644 --- a/NowWidget/NowButton.swift +++ b/NowWidget/NowButton.swift @@ -47,8 +47,16 @@ public func drawButton(_ view: UIView, _ position: Int, _ color: UIColor, _ titl let iconMargin: CGFloat = 5.0 let titleSpacing: CGFloat = 5.0 - let imageSize = button.imageView!.image!.size - let titleEdgeInsets = UIEdgeInsets.init(top: 0.0, left: -imageSize.width, bottom: -(imageSize.height - titleSpacing), right: 0.0) + var titleEdgeInsets = UIEdgeInsets.init(); + + if #available(iOS 13.0, *) { + let imageSize = button.imageView!.image!.size + let frameSize = button.imageView!.frame + titleEdgeInsets = UIEdgeInsets.init(top: 0.0, left: -(frameSize.width - 2*titleSpacing), bottom: -(imageSize.height - titleSpacing), right: 0.0) + } else { + let imageSize = button.imageView!.image!.size + titleEdgeInsets = UIEdgeInsets.init(top: 0.0, left: -imageSize.width, bottom: -(imageSize.height - titleSpacing), right: 0.0) + } let imageEdgeInsets = UIEdgeInsets.init(top: iconMargin, left: iconMargin, bottom: iconMargin, right: iconMargin); button.imageEdgeInsets = imageEdgeInsets diff --git a/NowWidget/TodayViewController.swift b/NowWidget/TodayViewController.swift index c0f8c30..b66c7ae 100644 --- a/NowWidget/TodayViewController.swift +++ b/NowWidget/TodayViewController.swift @@ -23,14 +23,16 @@ class TodayViewController: UIViewController, NCWidgetProviding { func loadData() -> Void { sharedData = loadSharedData() - if sharedData != nil && sharedData!.isDefined() { + if sharedData == nil || !sharedData!.isDefined() { print("Missing data") setButtonTitle("Not logged in. Open Olisto to continue.") + return } if (sharedData!.hasButtons()) { print("No buttons configured") setButtonTitle("No buttons configured. Open Olisto to continue.") + return } NSLog("Data initialized. \nServer baseURL: \n\(sharedData!.baseUrl!), \ntoken: \n\(sharedData!.token!),\nuuid: \n\(sharedData!.phoneId!)"); @@ -121,7 +123,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { loadData() } - if (sharedData == nil || activeDisplayMode == NCWidgetDisplayMode.compact) { + if (sharedData == nil || !sharedData!.isDefined() || activeDisplayMode == NCWidgetDisplayMode.compact) { self.preferredContentSize = CGSize(width: 0.0, height: 110.0) } else if (sharedData!.buttons.count <= 12) { self.preferredContentSize = CGSize(width: 0.0, height: 220.0) @@ -145,7 +147,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { super.viewDidLoad() loadData() - if (sharedData != nil) { + if (sharedData != nil && sharedData!.isDefined()) { if #available(iOSApplicationExtension 10.0, *) { setWidgetSize() } @@ -156,7 +158,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { // Perform any setup necessary in order to update the view. loadData() - if (sharedData != nil) { + if (sharedData != nil && sharedData!.isDefined()) { if #available(iOSApplicationExtension 10.0, *) { setWidgetSize() } From 153722f5b321a50544a94da9077a1f2ac5df27f6 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Thu, 12 Mar 2020 12:26:31 +0000 Subject: [PATCH 34/43] Always draw and load --- NowWidget/TodayViewController.swift | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/NowWidget/TodayViewController.swift b/NowWidget/TodayViewController.swift index b66c7ae..fc8d3a7 100644 --- a/NowWidget/TodayViewController.swift +++ b/NowWidget/TodayViewController.swift @@ -22,6 +22,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { } func loadData() -> Void { + spinner.startAnimating(); sharedData = loadSharedData() if sharedData == nil || !sharedData!.isDefined() { print("Missing data") @@ -119,19 +120,17 @@ class TodayViewController: UIViewController, NCWidgetProviding { @available(iOSApplicationExtension 10.0, *) func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { - if (sharedData == nil) { - loadData() - } + + loadData() if (sharedData == nil || !sharedData!.isDefined() || activeDisplayMode == NCWidgetDisplayMode.compact) { self.preferredContentSize = CGSize(width: 0.0, height: 110.0) } else if (sharedData!.buttons.count <= 12) { self.preferredContentSize = CGSize(width: 0.0, height: 220.0) - drawButtons() } else { self.preferredContentSize = CGSize(width: 0.0, height: 330.0) - drawButtons() } + drawButtons() } @available(iOSApplicationExtension 10.0, *) From 1e41bf6b0cb9b2247ae80d8ded0463c009be84be Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Thu, 12 Mar 2020 12:48:11 +0000 Subject: [PATCH 35/43] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1a4c373..06ae972 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cordova-plugin-today-widget", - "version": "1.0.0", + "version": "1.0.1", "description": "Add a toaday widget app extension target to your cordova project.", "repository": { "type": "git", From 2da4b411e0a2545377df514607e5b40799542427 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Fri, 8 May 2020 03:47:25 +0200 Subject: [PATCH 36/43] Allow dark mode --- NowWidget/NowButton.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NowWidget/NowButton.swift b/NowWidget/NowButton.swift index 7252d82..e3c1ad7 100644 --- a/NowWidget/NowButton.swift +++ b/NowWidget/NowButton.swift @@ -109,7 +109,9 @@ func hexStringToUIColor (hex:String) -> UIColor { } func primaryColor() -> UIColor { - if #available(iOS 10.0, *) { + if #available(iOS 13.0, *) { + return UIColor.label + } else if #available(iOS 10.0, *){ return UIColor.darkText } else { return UIColor.lightText From 2d10aa0598af197859054b6ba5a843870a2a0c38 Mon Sep 17 00:00:00 2001 From: Remy Kabel Date: Fri, 8 May 2020 04:19:38 +0200 Subject: [PATCH 37/43] Fix label --- NowWidget/MainInterface.storyboard | 10 ++++------ NowWidget/NowButton.swift | 14 +++++++------- NowWidget/TodayViewController.swift | 8 ++++++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/NowWidget/MainInterface.storyboard b/NowWidget/MainInterface.storyboard index e7cd7a2..ac4718a 100644 --- a/NowWidget/MainInterface.storyboard +++ b/NowWidget/MainInterface.storyboard @@ -1,11 +1,9 @@ - - - - + + - + @@ -24,7 +22,7 @@