41 lines
969 B
JavaScript
41 lines
969 B
JavaScript
const _warned = {};
|
|
const NO_RESULT = [false, null];
|
|
|
|
export default class LinkLookup {
|
|
|
|
constructor(links) {
|
|
this._links = links;
|
|
}
|
|
|
|
check(post, href) {
|
|
if (_warned[href]) { return NO_RESULT; }
|
|
|
|
const normalized = href.replace(/^https?:\/\//, '').replace(/\/$/, '');
|
|
if (_warned[normalized]) { return NO_RESULT; }
|
|
|
|
const linkInfo = this._links[normalized];
|
|
if (linkInfo) {
|
|
|
|
if (post) {
|
|
// Skip edits to the OP
|
|
if (post) {
|
|
const postNumber = post.get('post_number');
|
|
if (postNumber === 1 || postNumber === linkInfo.post_number) { return NO_RESULT; }
|
|
}
|
|
|
|
// Don't warn on older posts
|
|
const createdAt = moment(post.get('created_at'));
|
|
if (createdAt.isBefore(moment().subtract(2, 'weeks'))) {
|
|
return NO_RESULT;
|
|
}
|
|
}
|
|
|
|
_warned[href] = true;
|
|
_warned[normalized] = true;
|
|
return [true, linkInfo];
|
|
}
|
|
|
|
return NO_RESULT;
|
|
}
|
|
};
|