Skip to content

Commit 61d8d9f

Browse files
author
Travis Lawrence
committed
Refactor history and get preload for current dates
1 parent d8bb24c commit 61d8d9f

3 files changed

Lines changed: 31 additions & 23 deletions

File tree

src/components/drawerViews/HistoryView.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import React from "react";
22
import ViewItem from "./ViewItem";
33

44
function HistoryView({ historyHelper, specificDate, closeDrawer }) {
5-
const { dates, responses } = historyHelper;
5+
const { responses } = historyHelper;
66

77
return (
88
<div className="favorites">
99
<h2>Recent Viewed APOD's</h2>
1010
<div className="drawer-list">
11-
{dates.map((date, idx) => {
12-
const { title } = responses[date];
11+
{responses.map((response, idx) => {
12+
const { title, date } = response;
1313

1414
return (
1515
<ViewItem

src/utilities/history.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
export default class History {
22
constructor() {
3-
this.dates = [];
4-
this.responses = {};
3+
this.responses = [];
54
this.currentIdx = 0;
65
}
76

87
add(response) {
9-
const dateIndex = this.dates.indexOf(response.date);
8+
const dateIndex = this.responses.findIndex(
9+
({ date }) => date === response.date
10+
);
1011

1112
if (dateIndex === -1) {
12-
this.dates.push(response.date);
13-
this.responses[response.date] = response;
14-
this.currentIdx = this.dates.length - 1;
13+
this.responses.push(response);
14+
this.currentIdx = this.responses.length - 1;
1515
} else {
1616
this.currentIdx = dateIndex;
1717
}
1818
}
1919

2020
getResponse() {
21-
const dateKey = this.dates[this.currentIdx];
22-
return this.responses[dateKey];
21+
return this.responses[this.currentIdx];
2322
}
2423

2524
getPreviousDate() {
@@ -31,7 +30,7 @@ export default class History {
3130
}
3231

3332
getNextDate() {
34-
if (this.currentIdx === this.dates.length - 1) {
33+
if (this.currentIdx === this.responses.length - 1) {
3534
return false;
3635
}
3736
this.currentIdx += 1;

src/utilities/preload-utility.js

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,19 @@ export default class Preload {
2828
}
2929
};
3030

31-
processResponse = ({ data }) => {
32-
data.forEach(response => {
33-
this.loadingCount += 1;
34-
!this.dates.find(date => date === response.date)
35-
? this.load(response)
36-
: this.decreaseLoadCount();
37-
});
38-
};
39-
31+
// Preload APODs from today to {CURRENT_DATE_RANGE } days ago
32+
// This doesn't need to be in the this.dates array since these dates
33+
// don't need to be specifically navigated to.
4034
getDateRangeImages = (end_date = today()) => {
4135
const start_date = subtractDates(CURRENT_DATE_RANGE, end_date);
42-
const params = { start_date, end_date, api_key: API_KEY }; // snake case for request
43-
axios.get(APOD_API_URL, { params }).then(this.processResponse);
36+
const params = { start_date, end_date, api_key: API_KEY };
37+
axios.get(APOD_API_URL, { params }).then(({ data }) => {
38+
data.forEach(response => {
39+
const { hdurl } = response;
40+
const loadedImage = new Image();
41+
loadedImage.src = hdurl;
42+
});
43+
});
4444
};
4545

4646
getImages = (count = PRELOAD_VALUE) => {
@@ -53,6 +53,15 @@ export default class Preload {
5353
});
5454
};
5555

56+
processResponse = ({ data }) => {
57+
data.forEach(response => {
58+
this.loadingCount += 1;
59+
!this.dates.find(date => date === response.date)
60+
? this.load(response)
61+
: this.decreaseLoadCount();
62+
});
63+
};
64+
5665
load = response => {
5766
const { hdurl, media_type } = response;
5867

0 commit comments

Comments
 (0)