Skip to content

Commit 3e16060

Browse files
committed
- Supporting multiple dates in trakt history
- Fixed some errors
1 parent 847a8e0 commit 3e16060

File tree

6 files changed

+38
-28
lines changed

6 files changed

+38
-28
lines changed

app/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "__MSG_appName__",
33
"short_name": "__MSG_appShortName__",
4-
"version": "2.2.0",
4+
"version": "2.2.1",
55
"manifest_version": 2,
66
"description": "__MSG_appDescription__",
77
"icons": {

app/scripts/src/content/item-parser.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,26 @@ ItemParser.parse = function parse(callback) {
2424
var typeElement = document.querySelector("meta[name=type]");
2525
if (typeElement) {
2626
switch(typeElement.getAttribute("content")) {
27+
//Old format
2728
case 'program':
2829
type = "movie";
2930
mainTitle = document.querySelector("meta[name=title]").getAttribute("content");
31+
item = new Item({ title: mainTitle, type: type });
3032
break;
3133
case 'episode':
34+
type = "show";
35+
mainTitle = document.querySelector("meta[name=title]").getAttribute("content");
36+
Rollbar.info("Seems to not be a season based series", mainTitle);
3237
return;
3338
default:
3439
Rollbar.error("Unknown series/movie type", typeElement.getAttribute("content"));
3540
return;
3641
}
3742
} else {
43+
//new format as of july 2018 "/serie/narvestad-tar-ferie/sesong/1/episode/6"
3844
type = "show";
3945
mainTitle = document.querySelector(".tv-series-hero__title").textContent;
40-
}
41-
if (type === 'show') {
4246
var uri = document.querySelector("a.tv-series-episodes__episode-link--active").getAttribute("href");
43-
//format as of july 2018 "/serie/narvestad-tar-ferie/sesong/1/episode/6"
4447
if (!uri.split('/')[3] || uri.split('/')[3] !== 'sesong') {
4548
Rollbar.error("Unexpected URL-format", uri);
4649
return;
@@ -57,8 +60,6 @@ ItemParser.parse = function parse(callback) {
5760
type: type,
5861
nrkId: nrkSeriesId
5962
});
60-
} else {
61-
item = new Item({ title: mainTitle, type: type });
6263
}
6364
callback.call(this, item);
6465
};

app/scripts/src/history-sync/actions/activity-action-creators.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import ViewingActivityAppDispatcher from '../dispatcher/viewing-activity-app-dispatcher';
22
import ActionTypes from '../constants/activity-constants';
3-
import NRKWebAPIUtils from '../utils/nrk-web-api-utils';
43

54
export default class ActivityActionCreators {
65
static receiveActivities(activities) {

app/scripts/src/history-sync/components/activity-list-item.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,23 @@ export default class ActivityListItem extends React.Component {
3535
nrkTitle += " (S"+nrk.season+"E"+nrk.episode+")";
3636
}
3737
let nrkUrl = `https://tv.nrk.no/program/${nrk.id}`;
38-
let trakt = activity.trakt;
38+
let traktArray = activity.trakt;
3939
let traktDate, traktUrl, traktTitle;
4040

41-
if (trakt) {
42-
traktDate = trakt.date ? trakt.date.format('MMMM Do YYYY, HH:mm:ss') : '-';
43-
traktUrl = trakt.season ? `https://trakt.tv/shows/${trakt.show.ids.slug}/seasons/${trakt.season}/episodes/${trakt.number}` : `https://trakt.tv/movies/${trakt.ids.slug}`;
44-
if (trakt.show && trakt.title){
45-
traktTitle = `${trakt.show.title}: ${trakt.title}`;
46-
} else {
47-
traktTitle = trakt.show ? trakt.show.title : trakt.title;
48-
}
41+
if (traktArray) {
42+
traktArray.forEach((trakt, index)=> {
43+
if (index === 0){
44+
traktDate = trakt.date ? trakt.date.format('MMMM Do YYYY, HH:mm:ss') : '-';
45+
traktUrl = trakt.season ? `https://trakt.tv/shows/${trakt.show.ids.slug}/seasons/${trakt.season}/episodes/${trakt.number}` : `https://trakt.tv/movies/${trakt.ids.slug}`;
46+
if (trakt.show && trakt.title){
47+
traktTitle = `${trakt.show.title}: ${trakt.title}`;
48+
} else {
49+
traktTitle = trakt.show ? trakt.show.title : trakt.title;
50+
}
51+
} else {
52+
traktDate += " & " + (trakt.date ? trakt.date.format('MMMM Do YYYY, HH:mm:ss') : '-');
53+
}
54+
})
4955
}
5056

5157
let formId = `${nrk.id}--add`;
@@ -55,7 +61,7 @@ export default class ActivityListItem extends React.Component {
5561
<span className='mdl-list__item-primary-content'>
5662
<TmdbImage
5763
className='mdl-list__item-avatar'
58-
item={trakt}
64+
item={traktArray[0]}
5965
imageHost={this.props.imageHost}
6066
imageWidth={this.props.imageWidth}
6167
/>

app/scripts/src/history-sync/utils/trakt-web-api-utils.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export default class TraktWebAPIUtils {
6363
})
6464
.catch((status, response) => {
6565
let nrk = Object.assign(options.item, { date: options.date });
66-
resolve(Object.assign({ nrk }, { add: false }));
66+
resolve(Object.assign({ nrk, trakt: [] }, { add: false }));
6767
});
6868
});
6969
}
@@ -75,15 +75,19 @@ export default class TraktWebAPIUtils {
7575
url: TraktWebAPIUtils.activityUrl(options.result.activity),
7676
success: function(response) {
7777
let exclude = false;
78-
let history = JSON.parse(response)[0];
79-
let date;
80-
81-
if (history && history.watched_at) {
82-
date = moment(history.watched_at);
83-
exclude = date.diff(options.result.date, 'days') == 0;
84-
}
85-
let trakt = Object.assign(options.result.activity, { date: date });
86-
let nrk = Object.assign(options.item, { date: options.date });
78+
let allHistory = JSON.parse(response);
79+
let trakt = [];
80+
81+
allHistory.forEach((history) => {
82+
let date;
83+
if (history && history.watched_at) {
84+
date = moment(history.watched_at);
85+
exclude = exclude || date.diff(options.result.date, 'days') == 0;
86+
}
87+
trakt.push(Object.assign({}, options.result.activity, {date: date.clone()}));
88+
});
89+
90+
let nrk = Object.assign(options.item, {date: options.date});
8791
exclude = exclude || (options.item.progress.percentageWatched < options.item.progress.percentageAssumedFinished);
8892

8993
resolve(Object.assign({ nrk, trakt }, { add: !exclude }));

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"private": true,
1010
"dependencies": {
1111
"flux": "^2.1.1",
12-
"moment": "2.19.3",
12+
"moment": "2.22.2",
1313
"react": "0.13.3",
1414
"react-router": "2.0.0-rc5",
1515
"rollbar": "^2.4.4"

0 commit comments

Comments
 (0)