From a3dd9aa22091dc0571fa52933f5cceb3c96ce8e5 Mon Sep 17 00:00:00 2001
From: Travis Lawrence
Date: Wed, 18 Dec 2024 22:08:46 -0800
Subject: [PATCH 1/4] more
---
package.json | 1 +
src/constants.ts | 4 +-
src/hooks/useFetchApod.ts | 2 +-
src/manifest.json | 2 +-
src/pages/types.ts | 4 +-
src/utilities/images.ts | 29 ++-----
yarn.lock | 154 ++++++++++++++++++++++++++++++++++++++
7 files changed, 170 insertions(+), 26 deletions(-)
diff --git a/package.json b/package.json
index f9003f7..0f3fa48 100755
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-hot-loader": "^4.13.0",
+ "sass": "^1.83.0",
"styled-components": "^5.3.3",
"use-keyboard-shortcut": "^1.1.4"
},
diff --git a/src/constants.ts b/src/constants.ts
index d2d7cf6..2a30f89 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -1,7 +1,7 @@
import { TAppOptions } from './pages/types';
-export const APOD_API_URL = 'https://api.nasa.gov/planetary/apod';
-export const API_KEY = 'hPgI2kGa1jCxvfXjv6hq6hsYBQawAqvjMaZNs447';
+export const REDUNDANT_URL = 'https://apod.redundantrobot.com/apod';
+export const REDUNDANT_RANDOM_URL = `${REDUNDANT_URL}/random`;
export const MIN_APOD_DATE = `1995-6-16`;
export const DELAY_FOR_HD_LOAD = 1500;
diff --git a/src/hooks/useFetchApod.ts b/src/hooks/useFetchApod.ts
index d113e29..1e5ce5a 100644
--- a/src/hooks/useFetchApod.ts
+++ b/src/hooks/useFetchApod.ts
@@ -57,7 +57,7 @@ const useFetchApod = ({ hiResOnly, setDrawerIsOpen }: TFetchApodParams) => {
setErrorMessage(false);
if (response.media_type === 'other') {
- console.log(response, 'OTHER REPSONSE');
+ console.log(response, 'OTHER RESPONSE');
fetchApod({ random: true });
return;
}
diff --git a/src/manifest.json b/src/manifest.json
index 8d1892d..3fc2334 100755
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -4,7 +4,7 @@
"description": "Displays the Astronomy Picture of the Day (APOD) and allows you to review similar images of planets, stars, galaxies and nebulas",
"options_page": "popup.html",
"short_name": "APOD by The Trav",
- "version": "4.1.4",
+ "version": "4.2.0",
"background": { "service_worker": "background.bundle.js" },
"action": {
"default_popup": "popup.html",
diff --git a/src/pages/types.ts b/src/pages/types.ts
index 3f78b47..7ab5490 100644
--- a/src/pages/types.ts
+++ b/src/pages/types.ts
@@ -27,7 +27,7 @@ export type TFavoriteItem = {
imgUrl?: string;
};
-export type TFavorites = { [date: string]: TFavoriteItem };
+export type TFavorites = Record;
export type TAppOptions = {
[APOD_FAVORITES]: TFavorites;
@@ -58,6 +58,8 @@ export type TApodResponse = {
isImageHd?: boolean;
error?: any;
errorMessage?: string;
+ apodLink?: string;
+ thumbnailLink?: string;
};
export type TUseNavigationProps = {
diff --git a/src/utilities/images.ts b/src/utilities/images.ts
index 526af07..760d734 100644
--- a/src/utilities/images.ts
+++ b/src/utilities/images.ts
@@ -1,8 +1,7 @@
import {
- API_KEY,
- APOD_API_URL,
RANDOM_APODS,
- RANDOM_FETCH_COUNT,
+ REDUNDANT_RANDOM_URL,
+ REDUNDANT_URL,
RELOAD_RANDOM_LIMIT,
} from '../constants';
import axios from 'axios';
@@ -16,11 +15,7 @@ import {
let isReloadingCache = false;
const reloadCache = async () => {
- const params = {
- api_key: API_KEY,
- count: RANDOM_FETCH_COUNT,
- };
- const resp = await axios.get(APOD_API_URL, { params });
+ const resp = await axios.get(REDUNDANT_RANDOM_URL);
const images = resp.data.map((item: TApodResponse) =>
transformResponse(item)
);
@@ -73,18 +68,14 @@ const transformResponse = (data: TApodResponse) => {
preloadImage(data.url);
preloadImage(data.hdurl);
}
- data.apodUrl = `https://apod.nasa.gov/apod/ap${linkDateFormat(
- data.date
- )}.html`;
+ data.apodUrl =
+ data.apodLink ||
+ `https://apod.nasa.gov/apod/ap${linkDateFormat(data.date)}.html`;
data.date = trimDateString(data.date);
data.isToday = isDateToday(data.date);
return data;
};
export const fetchRandomImage = async (): Promise => {
- const params = {
- api_key: API_KEY,
- count: RANDOM_FETCH_COUNT,
- };
try {
// Look in cache
const cacheResp = await randomCache();
@@ -93,7 +84,7 @@ export const fetchRandomImage = async (): Promise => {
}
// Otherwise fetch
- const resp = await axios.get(APOD_API_URL, { params });
+ const resp = await axios.get(REDUNDANT_RANDOM_URL);
const images = resp.data.map((item: TApodResponse) =>
transformResponse(item)
);
@@ -113,12 +104,8 @@ export const fetchRandomImage = async (): Promise => {
export const fetchImage = async (
fetchOptions: TFetchOptions = {}
): Promise => {
- const params = {
- api_key: API_KEY,
- ...fetchOptions,
- };
try {
- const resp = await axios.get(APOD_API_URL, { params });
+ const resp = await axios.get(REDUNDANT_URL, { params: fetchOptions });
const data = transformResponse(resp.data);
saveToHistory(data);
return data;
diff --git a/yarn.lock b/yarn.lock
index c96d049..c4f0577 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1234,6 +1234,95 @@
mkdirp "^1.0.4"
rimraf "^3.0.2"
+"@parcel/watcher-android-arm64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a"
+ integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==
+
+"@parcel/watcher-darwin-arm64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f"
+ integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==
+
+"@parcel/watcher-darwin-x64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb"
+ integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==
+
+"@parcel/watcher-freebsd-x64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82"
+ integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==
+
+"@parcel/watcher-linux-arm-glibc@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42"
+ integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==
+
+"@parcel/watcher-linux-arm-musl@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4"
+ integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03"
+ integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==
+
+"@parcel/watcher-linux-arm64-musl@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732"
+ integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==
+
+"@parcel/watcher-linux-x64-glibc@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d"
+ integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==
+
+"@parcel/watcher-linux-x64-musl@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef"
+ integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==
+
+"@parcel/watcher-win32-arm64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154"
+ integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==
+
+"@parcel/watcher-win32-ia32@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220"
+ integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==
+
+"@parcel/watcher-win32-x64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7"
+ integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==
+
+"@parcel/watcher@^2.4.1":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10"
+ integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==
+ dependencies:
+ detect-libc "^1.0.3"
+ is-glob "^4.0.3"
+ micromatch "^4.0.5"
+ node-addon-api "^7.0.0"
+ optionalDependencies:
+ "@parcel/watcher-android-arm64" "2.5.0"
+ "@parcel/watcher-darwin-arm64" "2.5.0"
+ "@parcel/watcher-darwin-x64" "2.5.0"
+ "@parcel/watcher-freebsd-x64" "2.5.0"
+ "@parcel/watcher-linux-arm-glibc" "2.5.0"
+ "@parcel/watcher-linux-arm-musl" "2.5.0"
+ "@parcel/watcher-linux-arm64-glibc" "2.5.0"
+ "@parcel/watcher-linux-arm64-musl" "2.5.0"
+ "@parcel/watcher-linux-x64-glibc" "2.5.0"
+ "@parcel/watcher-linux-x64-musl" "2.5.0"
+ "@parcel/watcher-win32-arm64" "2.5.0"
+ "@parcel/watcher-win32-ia32" "2.5.0"
+ "@parcel/watcher-win32-x64" "2.5.0"
+
"@rushstack/eslint-patch@^1.1.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
@@ -2183,6 +2272,13 @@ braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
+braces@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
+ dependencies:
+ fill-range "^7.1.1"
+
browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5:
version "4.21.5"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
@@ -2333,6 +2429,13 @@ chokidar@^3.5.3:
optionalDependencies:
fsevents "~2.3.2"
+chokidar@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
+ integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
+ dependencies:
+ readdirp "^4.0.1"
+
chownr@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
@@ -2721,6 +2824,11 @@ destroy@1.2.0:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+detect-libc@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+
detect-node@^2.0.4:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@@ -3368,6 +3476,13 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
+fill-range@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
+ dependencies:
+ to-regex-range "^5.0.1"
+
finalhandler@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
@@ -3940,6 +4055,11 @@ ignore@^5.2.0:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+immutable@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1"
+ integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==
+
import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -4588,6 +4708,14 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.2"
picomatch "^2.3.1"
+micromatch@^4.0.5:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
+ dependencies:
+ braces "^3.0.3"
+ picomatch "^2.3.1"
+
mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
@@ -4798,6 +4926,11 @@ no-case@^3.0.4:
lower-case "^2.0.2"
tslib "^2.0.3"
+node-addon-api@^7.0.0:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
+ integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
+
node-forge@^1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
@@ -5424,6 +5557,11 @@ readable-stream@^3.0.6, readable-stream@^3.6.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readdirp@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
+ integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -5647,6 +5785,17 @@ sass-loader@^12.4.0:
klona "^2.0.4"
neo-async "^2.6.2"
+sass@^1.83.0:
+ version "1.83.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.83.0.tgz#e36842c0b88a94ed336fd16249b878a0541d536f"
+ integrity sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==
+ dependencies:
+ chokidar "^4.0.0"
+ immutable "^5.0.2"
+ source-map-js ">=0.6.2 <2.0.0"
+ optionalDependencies:
+ "@parcel/watcher" "^2.4.1"
+
scheduler@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
@@ -5874,6 +6023,11 @@ socks@^2.6.2:
ip "^2.0.0"
smart-buffer "^4.2.0"
+"source-map-js@>=0.6.2 <2.0.0":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+
source-map-js@^1.0.1, source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
From 461c9ab7c3f5c125fbe60ec8e6ebec51fe34d760 Mon Sep 17 00:00:00 2001
From: Travis Lawrence
Date: Sat, 21 Dec 2024 18:09:51 -0800
Subject: [PATCH 2/4] random still go through api
---
src/manifest.json | 5 ++++-
src/utilities/images.ts | 24 +++++++++++++++---------
2 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/src/manifest.json b/src/manifest.json
index 3fc2334..036ef82 100755
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -22,6 +22,9 @@
"matches": []
}
],
- "host_permissions": ["https://api.nasa.gov/*"],
+ "host_permissions": [
+ "https://api.nasa.gov/*",
+ "https://apod.redundantrobot.com/apod/*"
+ ],
"permissions": ["topSites", "storage"]
}
diff --git a/src/utilities/images.ts b/src/utilities/images.ts
index 760d734..8c2d58b 100644
--- a/src/utilities/images.ts
+++ b/src/utilities/images.ts
@@ -16,9 +16,15 @@ import {
let isReloadingCache = false;
const reloadCache = async () => {
const resp = await axios.get(REDUNDANT_RANDOM_URL);
- const images = resp.data.map((item: TApodResponse) =>
- transformResponse(item)
- );
+ const images = resp.data.map((item: TApodResponse) => {
+ const data = transformResponse(item);
+ return {
+ date: data.date,
+ title: data.title,
+ media_type: data.media_type,
+ url: data.url,
+ };
+ });
getLocalChrome([RANDOM_APODS], (options) => {
const cache = options[RANDOM_APODS];
@@ -80,19 +86,19 @@ export const fetchRandomImage = async (): Promise => {
// Look in cache
const cacheResp = await randomCache();
if (cacheResp) {
- return cacheResp;
+ const resp = await fetchImage({ date: cacheResp.date });
+ return resp;
}
// Otherwise fetch
- const resp = await axios.get(REDUNDANT_RANDOM_URL);
- const images = resp.data.map((item: TApodResponse) =>
- transformResponse(item)
- );
+ const { data } = await axios.get(REDUNDANT_RANDOM_URL);
+ const images = data.map((item: TApodResponse) => transformResponse(item));
return new Promise((resolve) => {
setLocalChrome({ [RANDOM_APODS]: images }, async () => {
const response = await randomCache();
- resolve(response);
+ const resp = await fetchImage({ date: response.date });
+ resolve(resp);
});
});
} catch (error) {
From 587c30dd5c535addaa52bb70d1a2cf2fc171b10e Mon Sep 17 00:00:00 2001
From: Travis Lawrence
Date: Sun, 22 Dec 2024 18:30:48 -0800
Subject: [PATCH 3/4] add userId uuid
---
src/constants.ts | 2 ++
src/pages/Newtab/index.tsx | 17 ++++++++++++++---
src/pages/Newtab/styles.ts | 6 +++---
src/pages/Popup/Popup.jsx | 25 ++++++++++++++++++++-----
src/pages/types.ts | 2 ++
src/utilities/utilities.ts | 8 ++++++++
6 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/src/constants.ts b/src/constants.ts
index 2a30f89..91c9240 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -27,6 +27,7 @@ export const TODAY_COUNT = 'todayCount';
export const TODAY_LIMIT = 'todayLimit';
export const IS_TODAY_LIMIT_ON = 'isTodayLimitOn';
export const RANDOM_APODS = 'randomApods';
+export const USER_ID = 'userId';
export const DRAWER_EXPLANATION = 'explanation';
export const DRAWER_FAVORITES = 'favorites';
@@ -43,6 +44,7 @@ export const APOD_OPTIONS: (keyof TAppOptions)[] = [
SHOW_TOP_SITES,
TODAY_COUNT,
TODAY_LIMIT,
+ USER_ID,
];
export const KEY_MAP = {
diff --git a/src/pages/Newtab/index.tsx b/src/pages/Newtab/index.tsx
index 641a53d..6688fc4 100644
--- a/src/pages/Newtab/index.tsx
+++ b/src/pages/Newtab/index.tsx
@@ -1,8 +1,14 @@
import React, { useEffect, useState } from 'react';
import { render } from 'react-dom';
-import { CURRENT_DATE, DEFAULT_OPTIONS, TODAY_COUNT } from '../../constants';
+import {
+ CURRENT_DATE,
+ DEFAULT_OPTIONS,
+ TODAY_COUNT,
+ USER_ID,
+} from '../../constants';
import {
formatDate,
+ generateUUID,
getAllChrome,
getToday,
isDateToday,
@@ -53,12 +59,17 @@ const App: React.FC<{ options?: TAppOptions }> = ({ options }) => {
};
getAllChrome((options) => {
+ const userId = options.userId ?? generateUUID();
+
+ if (!options[USER_ID]) {
+ setChrome({ [USER_ID]: userId });
+ }
+
render(
<>
-
+
>,
-
window.document.querySelector('#app-container')
);
});
diff --git a/src/pages/Newtab/styles.ts b/src/pages/Newtab/styles.ts
index dbe074d..84aac90 100644
--- a/src/pages/Newtab/styles.ts
+++ b/src/pages/Newtab/styles.ts
@@ -5,6 +5,9 @@ import {
DRAWER_HISTORY,
} from '../../constants';
+// @ts-expect-error
+import Montserrat from '../../assets/fonts/Montserrat-VariableFont_wght.ttf';
+
const black = '#111111';
export const lightBlack = 'rgba(0,0,0, 0.5)';
export const gray = 'rgba(51,51,51, 0.8)';
@@ -12,9 +15,6 @@ export const activeGray = 'rgba(80,80,80, 0.8)';
export const lightGray = 'rgba(199,199,199, 0.8)';
const highlightBlue = 'rgb(117, 221, 255)';
-// @ts-expect-error
-import Montserrat from '../../assets/fonts/Montserrat-VariableFont_wght.ttf';
-
export const FontStyles = createGlobalStyle`
@font-face {
font-family: 'Montserrat';
diff --git a/src/pages/Popup/Popup.jsx b/src/pages/Popup/Popup.jsx
index 02689bd..9ced100 100644
--- a/src/pages/Popup/Popup.jsx
+++ b/src/pages/Popup/Popup.jsx
@@ -7,7 +7,6 @@ import {
IS_TODAY_LIMIT_ON,
DEFAULT_OPTIONS,
APOD_OPTIONS,
- TODAY_LIMIT_COUNT,
TODAY_LIMIT,
} from '../../constants';
import { getChrome, setChrome } from '../../utilities';
@@ -119,22 +118,38 @@ const Popup = () => {
diff --git a/src/pages/types.ts b/src/pages/types.ts
index 7ab5490..df0b591 100644
--- a/src/pages/types.ts
+++ b/src/pages/types.ts
@@ -10,6 +10,7 @@ import {
IS_TODAY_LIMIT_ON,
APOD_HISTORY,
RANDOM_APODS,
+ USER_ID,
} from '../constants';
export type THistoryItem = {
@@ -41,6 +42,7 @@ export type TAppOptions = {
[TODAY_COUNT]: number;
[TODAY_LIMIT]: number;
[RANDOM_APODS]?: number;
+ [USER_ID]?: string;
};
export type TApodResponse = {
diff --git a/src/utilities/utilities.ts b/src/utilities/utilities.ts
index c2c9a1a..d97b6ee 100644
--- a/src/utilities/utilities.ts
+++ b/src/utilities/utilities.ts
@@ -20,3 +20,11 @@ export function titleCase(text: string) {
if (!text) return text;
return text[0].toUpperCase() + text.slice(1);
}
+
+export const generateUUID = () => {
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ const r = (Math.random() * 16) | 0;
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
+ return v.toString(16);
+ });
+};
From 96f809ec6cc9b5bf4ceeca980aecb0b741028bc3 Mon Sep 17 00:00:00 2001
From: Travis Lawrence
Date: Sun, 22 Dec 2024 18:42:51 -0800
Subject: [PATCH 4/4] random things
---
src/pages/Newtab/ApodBody.tsx | 4 ++--
src/pages/Newtab/Drawer/Tabs/Favorites.tsx | 2 +-
src/pages/Newtab/Drawer/Tabs/GridImage.tsx | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/pages/Newtab/ApodBody.tsx b/src/pages/Newtab/ApodBody.tsx
index 14c3444..ed20e7a 100644
--- a/src/pages/Newtab/ApodBody.tsx
+++ b/src/pages/Newtab/ApodBody.tsx
@@ -43,8 +43,8 @@ const ApodBody: React.FC<{ options: TAppOptions }> = ({ options }) => {
return ;
}
- if (apodResponse.errorMessage) {
- return {apodResponse.errorMessage}
;
+ if (errorMessage) {
+ return {errorMessage}
;
}
return apodResponse.media_type === 'video' ? (
diff --git a/src/pages/Newtab/Drawer/Tabs/Favorites.tsx b/src/pages/Newtab/Drawer/Tabs/Favorites.tsx
index 1da6bd3..4dc85f1 100644
--- a/src/pages/Newtab/Drawer/Tabs/Favorites.tsx
+++ b/src/pages/Newtab/Drawer/Tabs/Favorites.tsx
@@ -46,7 +46,7 @@ const Favorites: React.FC<{
filteredItems.map((item: any, idx: number) => {
return (