Terms and conditions screen (#118)

* Terms and Conditions screen added

* missing fields

* SQL migration added

* terms.text: markdown to html on server side

* markdown field type added

* other minor changes
This commit is contained in:
Fabio Cigliano 2018-06-06 07:35:30 +12:00 committed by Josh Harvey
parent d1712ce1ce
commit a30b835786
7 changed files with 1106 additions and 527 deletions

View file

@ -117,6 +117,19 @@
"sms", "sms",
"email" "email"
] ]
},
{
"code": "terms",
"display": "Terms and Conditions",
"cryptoScope": "global",
"machineScope": "global",
"fields": [
"termsScreenActive",
"termsScreenTitle",
"termsScreenText",
"termsAcceptButtonText",
"termsCancelButtonText"
]
} }
], ],
"fields": [ "fields": [
@ -800,6 +813,65 @@
], ],
"fieldValidation": [{"code": "required"}], "fieldValidation": [{"code": "required"}],
"default": true "default": true
},
{
"code": "termsScreenActive",
"displayBottom": "Terms and Conditions Screen enabled",
"fieldType": "onOff",
"fieldClass": null,
"fieldValidation": [
{
"code": "required"
}
],
"default": false
},
{
"code": "termsScreenTitle",
"displayBottom": "Title",
"displayTopCount": 0,
"fieldType": "string",
"fieldClass": null,
"default": "Terms and Conditions",
"enabledIfAny": [
"termsScreenActive"
],
"fieldValidation": []
},
{
"code": "termsScreenText",
"displayBottom": "Text",
"displayTopCount": 0,
"fieldType": "markdown",
"fieldClass": null,
"enabledIfAny": [
"termsScreenActive"
],
"fieldValidation": []
},
{
"code": "termsAcceptButtonText",
"displayBottom": "Accept button text",
"displayTopCount": 0,
"fieldType": "string",
"fieldClass": null,
"default": "Accept",
"enabledIfAny": [
"termsScreenActive"
],
"fieldValidation": []
},
{
"code": "termsCancelButtonText",
"displayBottom": "Cancel button text",
"displayTopCount": 0,
"fieldType": "string",
"fieldClass": null,
"default": "Cancel",
"enabledIfAny": [
"termsScreenActive"
],
"fieldValidation": []
} }
] ]
} }

View file

@ -5,6 +5,7 @@ const helmet = require('helmet')
const bodyParser = require('body-parser') const bodyParser = require('body-parser')
const _ = require('lodash/fp') const _ = require('lodash/fp')
const express = require('express') const express = require('express')
const nmd = require('nano-markdown')
const options = require('./options') const options = require('./options')
const logger = require('./logger') const logger = require('./logger')
@ -62,6 +63,8 @@ function poll (req, res, next) {
} }
} }
const terms = config.termsScreenActive ? createTerms(config) : null
const response = { const response = {
error: null, error: null,
locale, locale,
@ -81,6 +84,7 @@ function poll (req, res, next) {
crossRefVerificationThreshold: config.crossRefVerificationThreshold, crossRefVerificationThreshold: config.crossRefVerificationThreshold,
frontCameraVerificationActive: config.frontCameraVerificationActive, frontCameraVerificationActive: config.frontCameraVerificationActive,
frontCameraVerificationThreshold: config.frontCameraVerificationThreshold, frontCameraVerificationThreshold: config.frontCameraVerificationThreshold,
terms: terms,
cassettes, cassettes,
twoWayMode: config.cashOutEnabled, twoWayMode: config.cashOutEnabled,
zeroConfLimit: config.zeroConfLimit, zeroConfLimit: config.zeroConfLimit,
@ -426,4 +430,14 @@ function populateSettings (req, res, next) {
.catch(next) .catch(next)
} }
function createTerms(config) {
return {
active: config.termsScreenActive,
title: config.termsScreenTitle,
text: nmd(config.termsScreenText),
accept: config.termsAcceptButtonText,
cancel: config.termsCancelButtonText
}
}
module.exports = {app, localApp} module.exports = {app, localApp}

View file

@ -0,0 +1,14 @@
var db = require('./db')
exports.up = function (next) {
const sql = [
'alter table cash_in_txs add column terms_accepted boolean not null default false',
'alter table cash_out_txs add column terms_accepted boolean not null default false'
]
db.multi(sql, next)
}
exports.down = function (next) {
next()
}

16
package-lock.json generated
View file

@ -1069,9 +1069,9 @@
"integrity": "sha1-kKwa6sClMSFkY721j0LB4FyEB6w=" "integrity": "sha1-kKwa6sClMSFkY721j0LB4FyEB6w="
}, },
"bignumber.js": { "bignumber.js": {
"version": "4.0.2", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.0.2.tgz", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
"integrity": "sha1-LR3DfuWWiGfs6pC22k0W5oYI0h0=" "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
}, },
"binary-extensions": { "binary-extensions": {
"version": "1.8.0", "version": "1.8.0",
@ -1257,6 +1257,11 @@
"underscore.string": "2.4.0" "underscore.string": "2.4.0"
}, },
"dependencies": { "dependencies": {
"bignumber.js": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.0.4.tgz",
"integrity": "sha512-LDXpJKVzEx2/OqNbG9mXBNvHuiRL4PzHCGfnANHMJ+fv68Ads3exDVJeGDJws+AoNEuca93bU3q+S0woeUaCdg=="
},
"debug": { "debug": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
@ -6090,6 +6095,11 @@
"resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
"integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U="
}, },
"nano-markdown": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/nano-markdown/-/nano-markdown-1.2.0.tgz",
"integrity": "sha1-zGYEFrOWV705iq+zZaqseXQH8+I="
},
"natural-compare": { "natural-compare": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",

View file

@ -39,6 +39,7 @@
"minimist": "^1.2.0", "minimist": "^1.2.0",
"moment": "^2.17.0", "moment": "^2.17.0",
"morgan": "^1.8.2", "morgan": "^1.8.2",
"nano-markdown": "^1.2.0",
"ndjson": "^1.5.0", "ndjson": "^1.5.0",
"node-hkdf-sync": "^1.0.0", "node-hkdf-sync": "^1.0.0",
"node-mailjet": "^3.2.1", "node-mailjet": "^3.2.1",

File diff suppressed because it is too large Load diff

View file

@ -6446,6 +6446,48 @@ var _elm_lang$core$Set$partition = F2(
}; };
}); });
var _elm_community$json_extra$Json_Decode_Extra$when = F3(
function (checkDecoder, check, passDecoder) {
return A2(
_elm_lang$core$Json_Decode$andThen,
function (checkVal) {
return check(checkVal) ? passDecoder : _elm_lang$core$Json_Decode$fail(
A2(
_elm_lang$core$Basics_ops['++'],
'Check failed with input `',
A2(
_elm_lang$core$Basics_ops['++'],
_elm_lang$core$Basics$toString(checkVal),
'`')));
},
checkDecoder);
});
var _elm_community$json_extra$Json_Decode_Extra$combine = A2(
_elm_lang$core$List$foldr,
_elm_lang$core$Json_Decode$map2(
F2(
function (x, y) {
return {ctor: '::', _0: x, _1: y};
})),
_elm_lang$core$Json_Decode$succeed(
{ctor: '[]'}));
var _elm_community$json_extra$Json_Decode_Extra$collection = function (decoder) {
return A2(
_elm_lang$core$Json_Decode$andThen,
function (length) {
return _elm_community$json_extra$Json_Decode_Extra$combine(
A2(
_elm_lang$core$List$map,
function (index) {
return A2(
_elm_lang$core$Json_Decode$field,
_elm_lang$core$Basics$toString(index),
decoder);
},
A2(_elm_lang$core$List$range, 0, length - 1)));
},
A2(_elm_lang$core$Json_Decode$field, 'length', _elm_lang$core$Json_Decode$int));
};
var _elm_community$json_extra$Json_Decode_Extra$fromResult = function (result) { var _elm_community$json_extra$Json_Decode_Extra$fromResult = function (result) {
var _p0 = result; var _p0 = result;
if (_p0.ctor === 'Ok') { if (_p0.ctor === 'Ok') {
@ -6477,6 +6519,19 @@ var _elm_community$json_extra$Json_Decode_Extra$doubleEncoded = function (decode
}, },
_elm_lang$core$Json_Decode$string); _elm_lang$core$Json_Decode$string);
}; };
var _elm_community$json_extra$Json_Decode_Extra$keys = A2(
_elm_lang$core$Json_Decode$map,
A2(
_elm_lang$core$List$foldl,
F2(
function (_p4, acc) {
var _p5 = _p4;
return {ctor: '::', _0: _p5._0, _1: acc};
}),
{ctor: '[]'}),
_elm_lang$core$Json_Decode$keyValuePairs(
_elm_lang$core$Json_Decode$succeed(
{ctor: '_Tuple0'})));
var _elm_community$json_extra$Json_Decode_Extra$sequenceHelp = F2( var _elm_community$json_extra$Json_Decode_Extra$sequenceHelp = F2(
function (decoders, jsonValues) { function (decoders, jsonValues) {
return (!_elm_lang$core$Native_Utils.eq( return (!_elm_lang$core$Native_Utils.eq(
@ -6517,11 +6572,11 @@ var _elm_community$json_extra$Json_Decode_Extra$indexedList = function (indexedD
var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2( var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2(
function (fieldName, decoder) { function (fieldName, decoder) {
var finishDecoding = function (json) { var finishDecoding = function (json) {
var _p4 = A2( var _p6 = A2(
_elm_lang$core$Json_Decode$decodeValue, _elm_lang$core$Json_Decode$decodeValue,
A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value), A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value),
json); json);
if (_p4.ctor === 'Ok') { if (_p6.ctor === 'Ok') {
return A2( return A2(
_elm_lang$core$Json_Decode$map, _elm_lang$core$Json_Decode$map,
_elm_lang$core$Maybe$Just, _elm_lang$core$Maybe$Just,
@ -6541,21 +6596,21 @@ var _elm_community$json_extra$Json_Decode_Extra$withDefault = F2(
}); });
var _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples = F2( var _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples = F2(
function (keyDecoder, tuples) { function (keyDecoder, tuples) {
var _p5 = tuples; var _p7 = tuples;
if (_p5.ctor === '[]') { if (_p7.ctor === '[]') {
return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty); return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty);
} else { } else {
var _p6 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p5._0._0); var _p8 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p7._0._0);
if (_p6.ctor === 'Ok') { if (_p8.ctor === 'Ok') {
return A2( return A2(
_elm_lang$core$Json_Decode$andThen, _elm_lang$core$Json_Decode$andThen,
function (_p7) { function (_p9) {
return _elm_lang$core$Json_Decode$succeed( return _elm_lang$core$Json_Decode$succeed(
A3(_elm_lang$core$Dict$insert, _p6._0, _p5._0._1, _p7)); A3(_elm_lang$core$Dict$insert, _p8._0, _p7._0._1, _p9));
}, },
A2(_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples, keyDecoder, _p5._1)); A2(_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples, keyDecoder, _p7._1));
} else { } else {
return _elm_lang$core$Json_Decode$fail(_p6._0); return _elm_lang$core$Json_Decode$fail(_p8._0);
} }
} }
}); });
@ -6574,9 +6629,9 @@ var _elm_community$json_extra$Json_Decode_Extra$set = function (decoder) {
}; };
var _elm_community$json_extra$Json_Decode_Extra$date = A2( var _elm_community$json_extra$Json_Decode_Extra$date = A2(
_elm_lang$core$Json_Decode$andThen, _elm_lang$core$Json_Decode$andThen,
function (_p8) { function (_p10) {
return _elm_community$json_extra$Json_Decode_Extra$fromResult( return _elm_community$json_extra$Json_Decode_Extra$fromResult(
_elm_lang$core$Date$fromString(_p8)); _elm_lang$core$Date$fromString(_p10));
}, },
_elm_lang$core$Json_Decode$string); _elm_lang$core$Json_Decode$string);
var _elm_community$json_extra$Json_Decode_Extra$andMap = _elm_lang$core$Json_Decode$map2( var _elm_community$json_extra$Json_Decode_Extra$andMap = _elm_lang$core$Json_Decode$map2(
@ -10535,42 +10590,6 @@ var _justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth = F2(
} }
}); });
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime = function (rd) {
return (rd - 719163) * _justinmimbs$elm_date_extra$Date_Extra_Facts$msPerDay;
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber = function (rd) {
var _p0 = A2(_elm_lang$core$Basics_ops['%'], rd, 7);
if (_p0 === 0) {
return 7;
} else {
return _p0;
}
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$leapYearsInCommonEra = function (y) {
return (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear = function (y) {
return (365 * (y - 1)) + _justinmimbs$elm_date_extra$Date_Internal_RataDie$leapYearsInCommonEra(y - 1);
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate = F2(
function (y, d) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear(y) + d;
});
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear = function (y) {
var jan4RD = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate, y, 4);
return (jan4RD - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(jan4RD)) + 1;
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate = F3(
function (y, w, d) {
var week1Day0RD = _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear(y) - 1;
return (week1Day0RD + ((w - 1) * 7)) + d;
});
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate = F3(
function (y, m, d) {
var md = A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m);
var yd = _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear(y);
return (yd + md) + d;
});
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt = F2( var _justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt = F2(
function (a, b) { function (a, b) {
return { return {
@ -10580,77 +10599,86 @@ var _justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt = F2(
}; };
}); });
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$year = function (rd) { var _justinmimbs$elm_date_extra$Date_Internal_RataDie$year = function (rd) {
var _p1 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, rd, 146097); var _p0 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, rd, 146097);
var q400 = _p1._0; var n400 = _p0._0;
var r400 = _p1._1; var r400 = _p0._1;
var _p2 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r400, 36524); var _p1 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r400, 36524);
var q100 = _p2._0; var n100 = _p1._0;
var r100 = _p2._1; var r100 = _p1._1;
var _p3 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r100, 1461); var _p2 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r100, 1461);
var q4 = _p3._0; var n4 = _p2._0;
var r4 = _p3._1; var r4 = _p2._1;
var _p4 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r4, 365); var _p3 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r4, 365);
var q1 = _p4._0; var n1 = _p3._0;
var r1 = _p4._1; var r1 = _p3._1;
var n = _elm_lang$core$Native_Utils.eq(r1, 0) ? 0 : 1; var n = _elm_lang$core$Native_Utils.eq(r1, 0) ? 0 : 1;
return ((((q400 * 400) + (q100 * 100)) + (q4 * 4)) + q1) + n; return ((((n400 * 400) + (n100 * 100)) + (n4 * 4)) + n1) + n;
}; };
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$ordinalDay = function (rd) { var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber = function (rd) {
return rd - _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear( var _p4 = A2(_elm_lang$core$Basics_ops['%'], rd, 7);
_justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd)); if (_p4 === 0) {
return 7;
} else {
return _p4;
}
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear = function (y1) {
var y = y1 - 1;
var leapYears = (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);
return (365 * y) + leapYears;
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear = function (y) {
var jan4 = _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + 4;
return jan4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(jan4);
}; };
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear = function (rd) { var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear = function (rd) {
var daysToThursday = 4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(rd); return _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd + daysToThursday); rd + (4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(rd)));
}; };
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber = function (rd) { var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber = function (rd) {
var week1Day1RD = _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear( var week1Day1 = _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear(
_justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(rd)); _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(rd)) + 1;
return (((rd - week1Day1RD) / 7) | 0) + 1; return (((rd - week1Day1) / 7) | 0) + 1;
}; };
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$find = F2( var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate = F3(
function (pred, list) { function (wy, wn, wdn) {
find: return (_justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear(wy) + ((wn - 1) * 7)) + wdn;
while (true) { });
var _p5 = list; var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate = F3(
if (_p5.ctor === '[]') { function (y, m, d) {
return _elm_lang$core$Maybe$Nothing; return (_justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m)) + d;
} else { });
var _p6 = _p5._0; var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate = F2(
if (pred(_p6)) { function (y, od) {
return _elm_lang$core$Maybe$Just(_p6); return _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + od;
} else {
var _v2 = pred,
_v3 = _p5._1;
pred = _v2;
list = _v3;
continue find;
}
}
}
}); });
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$month = function (rd) {
var od = _justinmimbs$elm_date_extra$Date_Internal_RataDie$ordinalDay(rd);
var y = _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd);
return A2(
_elm_lang$core$Maybe$withDefault,
_elm_lang$core$Date$Jan,
A2(
_justinmimbs$elm_date_extra$Date_Internal_RataDie$find,
function (m) {
return _elm_lang$core$Native_Utils.cmp(
A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m),
od) < 0;
},
_elm_lang$core$List$reverse(_justinmimbs$elm_date_extra$Date_Extra_Facts$months)));
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$day = function (rd) {
var od = _justinmimbs$elm_date_extra$Date_Internal_RataDie$ordinalDay(rd);
var m = _justinmimbs$elm_date_extra$Date_Internal_RataDie$month(rd);
var y = _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd);
return od - A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m);
};
var _justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts = F4(
function (hh, mm, ss, ms) {
return (((_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerHour * hh) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerMinute * mm)) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerSecond * ss)) + ms;
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie = function (rd) {
return (rd - 719163) * _justinmimbs$elm_date_extra$Date_Extra_Facts$msPerDay;
};
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromOrdinalDate = F2(
function (y, d) {
return _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie(
A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate, y, d));
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromCalendarDate = F3(
function (y, m, d) {
return _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie(
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromParts = F7(
function (y, m, d, hh, mm, ss, ms) {
return A3(_justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromCalendarDate, y, m, d) + A4(_justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts, hh, mm, ss, ms);
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromWeekDate = F3(
function (y, w, d) {
return _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie(
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate, y, w, d));
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$weekNumberFromCalendarDate = F3( var _justinmimbs$elm_date_extra$Date_Internal_Core$weekNumberFromCalendarDate = F3(
function (y, m, d) { function (y, m, d) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber( return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber(
@ -10661,30 +10689,6 @@ var _justinmimbs$elm_date_extra$Date_Internal_Core$weekYearFromCalendarDate = F3
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear( return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d)); A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
}); });
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromOrdinalDate = F2(
function (y, d) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate, y, d));
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromWeekDate = F3(
function (y, w, d) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate, y, w, d));
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromCalendarDate = F3(
function (y, m, d) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts = F4(
function (hh, mm, ss, ms) {
return ((ms + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerSecond * ss)) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerMinute * mm)) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerHour * hh);
});
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromParts = F7(
function (y, m, d, hh, mm, ss, ms) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d)) + A4(_justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts, hh, mm, ss, ms);
});
var _justinmimbs$elm_date_extra$Date_Internal_Extract$msOffsetFromUtc = function (date) { var _justinmimbs$elm_date_extra$Date_Internal_Extract$msOffsetFromUtc = function (date) {
var utcTime = _elm_lang$core$Date$toTime(date); var utcTime = _elm_lang$core$Date$toTime(date);
@ -11533,6 +11537,13 @@ var _justinmimbs$elm_date_extra$Date_Internal_Parse$offsetTimeFromIsoString = fu
s)))); s))));
}; };
var _justinmimbs$elm_date_extra$Date_Extra$toRataDie = function (date) {
return A3(
_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate,
_elm_lang$core$Date$year(date),
_elm_lang$core$Date$month(date),
_elm_lang$core$Date$day(date));
};
var _justinmimbs$elm_date_extra$Date_Extra$toParts = function (date) { var _justinmimbs$elm_date_extra$Date_Extra$toParts = function (date) {
return { return {
ctor: '_Tuple7', ctor: '_Tuple7',
@ -11719,25 +11730,25 @@ var _justinmimbs$elm_date_extra$Date_Extra$add = F3(
} }
}); });
var _justinmimbs$elm_date_extra$Date_Extra$rangeHelp = F5( var _justinmimbs$elm_date_extra$Date_Extra$rangeHelp = F5(
function (result, interval, step, start, date) { function (interval, step, end, revList, date) {
rangeHelp: rangeHelp:
while (true) { while (true) {
if (_elm_lang$core$Native_Utils.cmp( if (_elm_lang$core$Native_Utils.cmp(
_elm_lang$core$Date$toTime(date), _elm_lang$core$Date$toTime(date),
_elm_lang$core$Date$toTime(start)) < 0) { _elm_lang$core$Date$toTime(end)) < 0) {
return result; var _v4 = interval,
} else { _v5 = step,
var _v4 = {ctor: '::', _0: date, _1: result}, _v6 = end,
_v5 = interval, _v7 = {ctor: '::', _0: date, _1: revList},
_v6 = step,
_v7 = start,
_v8 = A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, step, date); _v8 = A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, step, date);
result = _v4; interval = _v4;
interval = _v5; step = _v5;
step = _v6; end = _v6;
start = _v7; revList = _v7;
date = _v8; date = _v8;
continue rangeHelp; continue rangeHelp;
} else {
return _elm_lang$core$List$reverse(revList);
} }
} }
}); });
@ -11841,18 +11852,16 @@ var _justinmimbs$elm_date_extra$Date_Extra$ceiling = F2(
}); });
var _justinmimbs$elm_date_extra$Date_Extra$range = F4( var _justinmimbs$elm_date_extra$Date_Extra$range = F4(
function (interval, step, start, end) { function (interval, step, start, end) {
var stepBack = _elm_lang$core$Basics$negate( var first = A2(_justinmimbs$elm_date_extra$Date_Extra$ceiling, interval, start);
A2(_elm_lang$core$Basics$max, 1, step)); return (_elm_lang$core$Native_Utils.cmp(
return A5( _elm_lang$core$Date$toTime(first),
_elm_lang$core$Date$toTime(end)) < 0) ? A5(
_justinmimbs$elm_date_extra$Date_Extra$rangeHelp, _justinmimbs$elm_date_extra$Date_Extra$rangeHelp,
{ctor: '[]'},
interval, interval,
stepBack, A2(_elm_lang$core$Basics$max, 1, step),
start, end,
A2( {ctor: '[]'},
_justinmimbs$elm_date_extra$Date_Extra$ceiling, first) : {ctor: '[]'};
interval,
A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, stepBack, end)));
}); });
var _justinmimbs$elm_date_extra$Date_Extra$fromIsoString = function (_p11) { var _justinmimbs$elm_date_extra$Date_Extra$fromIsoString = function (_p11) {
return A2( return A2(
@ -11950,6 +11959,13 @@ var _justinmimbs$elm_date_extra$Date_Extra$diff = F3(
A2(_justinmimbs$elm_date_extra$Date_Extra$floor, _p19, date2)) / 7) | 0; A2(_justinmimbs$elm_date_extra$Date_Extra$floor, _p19, date2)) / 7) | 0;
} }
}); });
var _justinmimbs$elm_date_extra$Date_Extra$fromRataDie = function (rd) {
return A3(
_justinmimbs$elm_date_extra$Date_Extra$add,
_justinmimbs$elm_date_extra$Date_Extra$Day,
rd - 719163,
A3(_justinmimbs$elm_date_extra$Date_Extra$fromCalendarDate, 1970, _elm_lang$core$Date$Jan, 1));
};
var _justinmimbs$elm_date_extra$Date_Extra$Hour = {ctor: 'Hour'}; var _justinmimbs$elm_date_extra$Date_Extra$Hour = {ctor: 'Hour'};
var _justinmimbs$elm_date_extra$Date_Extra$Minute = {ctor: 'Minute'}; var _justinmimbs$elm_date_extra$Date_Extra$Minute = {ctor: 'Minute'};
var _justinmimbs$elm_date_extra$Date_Extra$equalBy = F3( var _justinmimbs$elm_date_extra$Date_Extra$equalBy = F3(
@ -12070,87 +12086,89 @@ var _krisajenkins$remotedata$RemoteData$prism = {
var _krisajenkins$remotedata$RemoteData$Failure = function (a) { var _krisajenkins$remotedata$RemoteData$Failure = function (a) {
return {ctor: 'Failure', _0: a}; return {ctor: 'Failure', _0: a};
}; };
var _krisajenkins$remotedata$RemoteData$fromMaybe = F2(
function (error, maybe) {
var _p6 = maybe;
if (_p6.ctor === 'Nothing') {
return _krisajenkins$remotedata$RemoteData$Failure(error);
} else {
return _krisajenkins$remotedata$RemoteData$Success(_p6._0);
}
});
var _krisajenkins$remotedata$RemoteData$fromResult = function (result) { var _krisajenkins$remotedata$RemoteData$fromResult = function (result) {
var _p6 = result; var _p7 = result;
if (_p6.ctor === 'Err') { if (_p7.ctor === 'Err') {
return _krisajenkins$remotedata$RemoteData$Failure(_p6._0); return _krisajenkins$remotedata$RemoteData$Failure(_p7._0);
} else { } else {
return _krisajenkins$remotedata$RemoteData$Success(_p6._0); return _krisajenkins$remotedata$RemoteData$Success(_p7._0);
} }
}; };
var _krisajenkins$remotedata$RemoteData$asCmd = _elm_lang$core$Task$attempt(_krisajenkins$remotedata$RemoteData$fromResult); var _krisajenkins$remotedata$RemoteData$asCmd = _elm_lang$core$Task$attempt(_krisajenkins$remotedata$RemoteData$fromResult);
var _krisajenkins$remotedata$RemoteData$sendRequest = _elm_lang$http$Http$send(_krisajenkins$remotedata$RemoteData$fromResult); var _krisajenkins$remotedata$RemoteData$sendRequest = _elm_lang$http$Http$send(_krisajenkins$remotedata$RemoteData$fromResult);
var _krisajenkins$remotedata$RemoteData$fromTask = function (_p7) { var _krisajenkins$remotedata$RemoteData$fromTask = function (_p8) {
return A2( return A2(
_elm_lang$core$Task$onError, _elm_lang$core$Task$onError,
function (_p8) { function (_p9) {
return _elm_lang$core$Task$succeed( return _elm_lang$core$Task$succeed(
_krisajenkins$remotedata$RemoteData$Failure(_p8)); _krisajenkins$remotedata$RemoteData$Failure(_p9));
}, },
A2(_elm_lang$core$Task$map, _krisajenkins$remotedata$RemoteData$Success, _p7)); A2(_elm_lang$core$Task$map, _krisajenkins$remotedata$RemoteData$Success, _p8));
}; };
var _krisajenkins$remotedata$RemoteData$Loading = {ctor: 'Loading'}; var _krisajenkins$remotedata$RemoteData$Loading = {ctor: 'Loading'};
var _krisajenkins$remotedata$RemoteData$NotAsked = {ctor: 'NotAsked'}; var _krisajenkins$remotedata$RemoteData$NotAsked = {ctor: 'NotAsked'};
var _krisajenkins$remotedata$RemoteData$map = F2( var _krisajenkins$remotedata$RemoteData$map = F2(
function (f, data) { function (f, data) {
var _p9 = data; var _p10 = data;
switch (_p9.ctor) { switch (_p10.ctor) {
case 'Success': case 'Success':
return _krisajenkins$remotedata$RemoteData$Success( return _krisajenkins$remotedata$RemoteData$Success(
f(_p9._0)); f(_p10._0));
case 'Loading': case 'Loading':
return _krisajenkins$remotedata$RemoteData$Loading; return _krisajenkins$remotedata$RemoteData$Loading;
case 'NotAsked': case 'NotAsked':
return _krisajenkins$remotedata$RemoteData$NotAsked; return _krisajenkins$remotedata$RemoteData$NotAsked;
default: default:
return _krisajenkins$remotedata$RemoteData$Failure(_p9._0); return _krisajenkins$remotedata$RemoteData$Failure(_p10._0);
} }
}); });
var _krisajenkins$remotedata$RemoteData$toMaybe = function (_p10) { var _krisajenkins$remotedata$RemoteData$toMaybe = function (_p11) {
return A2( return A2(
_krisajenkins$remotedata$RemoteData$withDefault, _krisajenkins$remotedata$RemoteData$withDefault,
_elm_lang$core$Maybe$Nothing, _elm_lang$core$Maybe$Nothing,
A2(_krisajenkins$remotedata$RemoteData$map, _elm_lang$core$Maybe$Just, _p10)); A2(_krisajenkins$remotedata$RemoteData$map, _elm_lang$core$Maybe$Just, _p11));
}; };
var _krisajenkins$remotedata$RemoteData$mapError = F2( var _krisajenkins$remotedata$RemoteData$mapError = F2(
function (f, data) { function (f, data) {
var _p11 = data;
switch (_p11.ctor) {
case 'Success':
return _krisajenkins$remotedata$RemoteData$Success(_p11._0);
case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure(
f(_p11._0));
case 'Loading':
return _krisajenkins$remotedata$RemoteData$Loading;
default:
return _krisajenkins$remotedata$RemoteData$NotAsked;
}
});
var _krisajenkins$remotedata$RemoteData$mapBoth = F3(
function (successFn, errorFn, data) {
var _p12 = data; var _p12 = data;
switch (_p12.ctor) { switch (_p12.ctor) {
case 'Success': case 'Success':
return _krisajenkins$remotedata$RemoteData$Success( return _krisajenkins$remotedata$RemoteData$Success(_p12._0);
successFn(_p12._0));
case 'Failure': case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure( return _krisajenkins$remotedata$RemoteData$Failure(
errorFn(_p12._0)); f(_p12._0));
case 'Loading': case 'Loading':
return _krisajenkins$remotedata$RemoteData$Loading; return _krisajenkins$remotedata$RemoteData$Loading;
default: default:
return _krisajenkins$remotedata$RemoteData$NotAsked; return _krisajenkins$remotedata$RemoteData$NotAsked;
} }
}); });
var _krisajenkins$remotedata$RemoteData$mapBoth = F2(
function (successFn, errorFn) {
return function (_p13) {
return A2(
_krisajenkins$remotedata$RemoteData$mapError,
errorFn,
A2(_krisajenkins$remotedata$RemoteData$map, successFn, _p13));
};
});
var _krisajenkins$remotedata$RemoteData$andThen = F2( var _krisajenkins$remotedata$RemoteData$andThen = F2(
function (f, data) { function (f, data) {
var _p13 = data; var _p14 = data;
switch (_p13.ctor) { switch (_p14.ctor) {
case 'Success': case 'Success':
return f(_p13._0); return f(_p14._0);
case 'Failure': case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure(_p13._0); return _krisajenkins$remotedata$RemoteData$Failure(_p14._0);
case 'NotAsked': case 'NotAsked':
return _krisajenkins$remotedata$RemoteData$NotAsked; return _krisajenkins$remotedata$RemoteData$NotAsked;
default: default:
@ -12159,17 +12177,61 @@ var _krisajenkins$remotedata$RemoteData$andThen = F2(
}); });
var _krisajenkins$remotedata$RemoteData$andMap = F2( var _krisajenkins$remotedata$RemoteData$andMap = F2(
function (wrappedValue, wrappedFunction) { function (wrappedValue, wrappedFunction) {
var _p14 = wrappedFunction; var _p15 = {ctor: '_Tuple2', _0: wrappedFunction, _1: wrappedValue};
switch (_p14.ctor) { _v11_5:
case 'Success': do {
return A2(_krisajenkins$remotedata$RemoteData$map, _p14._0, wrappedValue); _v11_4:
case 'Failure': do {
return _krisajenkins$remotedata$RemoteData$Failure(_p14._0); _v11_3:
case 'Loading': do {
_v11_2:
do {
switch (_p15._0.ctor) {
case 'Success':
switch (_p15._1.ctor) {
case 'Success':
return _krisajenkins$remotedata$RemoteData$Success(
_p15._0._0(_p15._1._0));
case 'Failure':
break _v11_2;
case 'Loading':
break _v11_4;
default:
return _krisajenkins$remotedata$RemoteData$NotAsked;
}
case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure(_p15._0._0);
case 'Loading':
switch (_p15._1.ctor) {
case 'Failure':
break _v11_2;
case 'Loading':
break _v11_3;
case 'NotAsked':
break _v11_3;
default:
break _v11_3;
}
default:
switch (_p15._1.ctor) {
case 'Failure':
break _v11_2;
case 'Loading':
break _v11_4;
case 'NotAsked':
break _v11_5;
default:
break _v11_5;
}
}
} while(false);
return _krisajenkins$remotedata$RemoteData$Failure(_p15._1._0);
} while(false);
return _krisajenkins$remotedata$RemoteData$Loading; return _krisajenkins$remotedata$RemoteData$Loading;
default: } while(false);
return _krisajenkins$remotedata$RemoteData$NotAsked; return _krisajenkins$remotedata$RemoteData$Loading;
} } while(false);
return _krisajenkins$remotedata$RemoteData$NotAsked;
}); });
var _krisajenkins$remotedata$RemoteData$map2 = F3( var _krisajenkins$remotedata$RemoteData$map2 = F3(
function (f, a, b) { function (f, a, b) {
@ -12178,6 +12240,15 @@ var _krisajenkins$remotedata$RemoteData$map2 = F3(
b, b,
A2(_krisajenkins$remotedata$RemoteData$map, f, a)); A2(_krisajenkins$remotedata$RemoteData$map, f, a));
}); });
var _krisajenkins$remotedata$RemoteData$fromList = A2(
_elm_lang$core$List$foldr,
_krisajenkins$remotedata$RemoteData$map2(
F2(
function (x, y) {
return {ctor: '::', _0: x, _1: y};
})),
_krisajenkins$remotedata$RemoteData$Success(
{ctor: '[]'}));
var _krisajenkins$remotedata$RemoteData$map3 = F4( var _krisajenkins$remotedata$RemoteData$map3 = F4(
function (f, a, b, c) { function (f, a, b, c) {
return A2( return A2(
@ -12203,12 +12274,12 @@ var _krisajenkins$remotedata$RemoteData$append = F2(
}); });
var _krisajenkins$remotedata$RemoteData$update = F2( var _krisajenkins$remotedata$RemoteData$update = F2(
function (f, remoteData) { function (f, remoteData) {
var _p15 = remoteData; var _p16 = remoteData;
switch (_p15.ctor) { switch (_p16.ctor) {
case 'Success': case 'Success':
var _p16 = f(_p15._0); var _p17 = f(_p16._0);
var first = _p16._0; var first = _p17._0;
var second = _p16._1; var second = _p17._1;
return { return {
ctor: '_Tuple2', ctor: '_Tuple2',
_0: _krisajenkins$remotedata$RemoteData$Success(first), _0: _krisajenkins$remotedata$RemoteData$Success(first),
@ -12221,7 +12292,7 @@ var _krisajenkins$remotedata$RemoteData$update = F2(
default: default:
return { return {
ctor: '_Tuple2', ctor: '_Tuple2',
_0: _krisajenkins$remotedata$RemoteData$Failure(_p15._0), _0: _krisajenkins$remotedata$RemoteData$Failure(_p16._0),
_1: _elm_lang$core$Platform_Cmd$none _1: _elm_lang$core$Platform_Cmd$none
}; };
} }