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",
"email"
]
},
{
"code": "terms",
"display": "Terms and Conditions",
"cryptoScope": "global",
"machineScope": "global",
"fields": [
"termsScreenActive",
"termsScreenTitle",
"termsScreenText",
"termsAcceptButtonText",
"termsCancelButtonText"
]
}
],
"fields": [
@ -800,6 +813,65 @@
],
"fieldValidation": [{"code": "required"}],
"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 _ = require('lodash/fp')
const express = require('express')
const nmd = require('nano-markdown')
const options = require('./options')
const logger = require('./logger')
@ -62,6 +63,8 @@ function poll (req, res, next) {
}
}
const terms = config.termsScreenActive ? createTerms(config) : null
const response = {
error: null,
locale,
@ -81,6 +84,7 @@ function poll (req, res, next) {
crossRefVerificationThreshold: config.crossRefVerificationThreshold,
frontCameraVerificationActive: config.frontCameraVerificationActive,
frontCameraVerificationThreshold: config.frontCameraVerificationThreshold,
terms: terms,
cassettes,
twoWayMode: config.cashOutEnabled,
zeroConfLimit: config.zeroConfLimit,
@ -426,4 +430,14 @@ function populateSettings (req, res, 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}

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="
},
"bignumber.js": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.0.2.tgz",
"integrity": "sha1-LR3DfuWWiGfs6pC22k0W5oYI0h0="
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
"integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
},
"binary-extensions": {
"version": "1.8.0",
@ -1257,6 +1257,11 @@
"underscore.string": "2.4.0"
},
"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": {
"version": "2.2.0",
"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",
"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": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",

View file

@ -39,6 +39,7 @@
"minimist": "^1.2.0",
"moment": "^2.17.0",
"morgan": "^1.8.2",
"nano-markdown": "^1.2.0",
"ndjson": "^1.5.0",
"node-hkdf-sync": "^1.0.0",
"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 _p0 = result;
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);
};
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(
function (decoders, jsonValues) {
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(
function (fieldName, decoder) {
var finishDecoding = function (json) {
var _p4 = A2(
var _p6 = A2(
_elm_lang$core$Json_Decode$decodeValue,
A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value),
json);
if (_p4.ctor === 'Ok') {
if (_p6.ctor === 'Ok') {
return A2(
_elm_lang$core$Json_Decode$map,
_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(
function (keyDecoder, tuples) {
var _p5 = tuples;
if (_p5.ctor === '[]') {
var _p7 = tuples;
if (_p7.ctor === '[]') {
return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty);
} else {
var _p6 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p5._0._0);
if (_p6.ctor === 'Ok') {
var _p8 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p7._0._0);
if (_p8.ctor === 'Ok') {
return A2(
_elm_lang$core$Json_Decode$andThen,
function (_p7) {
function (_p9) {
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 {
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(
_elm_lang$core$Json_Decode$andThen,
function (_p8) {
function (_p10) {
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);
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(
function (a, b) {
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 _p1 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, rd, 146097);
var q400 = _p1._0;
var r400 = _p1._1;
var _p2 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r400, 36524);
var q100 = _p2._0;
var r100 = _p2._1;
var _p3 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r100, 1461);
var q4 = _p3._0;
var r4 = _p3._1;
var _p4 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r4, 365);
var q1 = _p4._0;
var r1 = _p4._1;
var _p0 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, rd, 146097);
var n400 = _p0._0;
var r400 = _p0._1;
var _p1 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r400, 36524);
var n100 = _p1._0;
var r100 = _p1._1;
var _p2 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r100, 1461);
var n4 = _p2._0;
var r4 = _p2._1;
var _p3 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r4, 365);
var n1 = _p3._0;
var r1 = _p3._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) {
return rd - _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear(
_justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd));
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber = function (rd) {
var _p4 = A2(_elm_lang$core$Basics_ops['%'], rd, 7);
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 daysToThursday = 4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(rd);
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd + daysToThursday);
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(
rd + (4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(rd)));
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber = function (rd) {
var week1Day1RD = _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear(
_justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(rd));
return (((rd - week1Day1RD) / 7) | 0) + 1;
var week1Day1 = _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear(
_justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(rd)) + 1;
return (((rd - week1Day1) / 7) | 0) + 1;
};
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$find = F2(
function (pred, list) {
find:
while (true) {
var _p5 = list;
if (_p5.ctor === '[]') {
return _elm_lang$core$Maybe$Nothing;
} else {
var _p6 = _p5._0;
if (pred(_p6)) {
return _elm_lang$core$Maybe$Just(_p6);
} else {
var _v2 = pred,
_v3 = _p5._1;
pred = _v2;
list = _v3;
continue find;
}
}
}
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate = F3(
function (wy, wn, wdn) {
return (_justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear(wy) + ((wn - 1) * 7)) + wdn;
});
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate = F3(
function (y, m, d) {
return (_justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m)) + d;
});
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate = F2(
function (y, od) {
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + od;
});
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(
function (y, m, d) {
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(
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 utcTime = _elm_lang$core$Date$toTime(date);
@ -11533,6 +11537,13 @@ var _justinmimbs$elm_date_extra$Date_Internal_Parse$offsetTimeFromIsoString = fu
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) {
return {
ctor: '_Tuple7',
@ -11719,25 +11730,25 @@ var _justinmimbs$elm_date_extra$Date_Extra$add = F3(
}
});
var _justinmimbs$elm_date_extra$Date_Extra$rangeHelp = F5(
function (result, interval, step, start, date) {
function (interval, step, end, revList, date) {
rangeHelp:
while (true) {
if (_elm_lang$core$Native_Utils.cmp(
_elm_lang$core$Date$toTime(date),
_elm_lang$core$Date$toTime(start)) < 0) {
return result;
} else {
var _v4 = {ctor: '::', _0: date, _1: result},
_v5 = interval,
_v6 = step,
_v7 = start,
_elm_lang$core$Date$toTime(end)) < 0) {
var _v4 = interval,
_v5 = step,
_v6 = end,
_v7 = {ctor: '::', _0: date, _1: revList},
_v8 = A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, step, date);
result = _v4;
interval = _v5;
step = _v6;
start = _v7;
interval = _v4;
step = _v5;
end = _v6;
revList = _v7;
date = _v8;
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(
function (interval, step, start, end) {
var stepBack = _elm_lang$core$Basics$negate(
A2(_elm_lang$core$Basics$max, 1, step));
return A5(
var first = A2(_justinmimbs$elm_date_extra$Date_Extra$ceiling, interval, start);
return (_elm_lang$core$Native_Utils.cmp(
_elm_lang$core$Date$toTime(first),
_elm_lang$core$Date$toTime(end)) < 0) ? A5(
_justinmimbs$elm_date_extra$Date_Extra$rangeHelp,
{ctor: '[]'},
interval,
stepBack,
start,
A2(
_justinmimbs$elm_date_extra$Date_Extra$ceiling,
interval,
A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, stepBack, end)));
A2(_elm_lang$core$Basics$max, 1, step),
end,
{ctor: '[]'},
first) : {ctor: '[]'};
});
var _justinmimbs$elm_date_extra$Date_Extra$fromIsoString = function (_p11) {
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;
}
});
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$Minute = {ctor: 'Minute'};
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) {
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 _p6 = result;
if (_p6.ctor === 'Err') {
return _krisajenkins$remotedata$RemoteData$Failure(_p6._0);
var _p7 = result;
if (_p7.ctor === 'Err') {
return _krisajenkins$remotedata$RemoteData$Failure(_p7._0);
} 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$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(
_elm_lang$core$Task$onError,
function (_p8) {
function (_p9) {
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$NotAsked = {ctor: 'NotAsked'};
var _krisajenkins$remotedata$RemoteData$map = F2(
function (f, data) {
var _p9 = data;
switch (_p9.ctor) {
var _p10 = data;
switch (_p10.ctor) {
case 'Success':
return _krisajenkins$remotedata$RemoteData$Success(
f(_p9._0));
f(_p10._0));
case 'Loading':
return _krisajenkins$remotedata$RemoteData$Loading;
case 'NotAsked':
return _krisajenkins$remotedata$RemoteData$NotAsked;
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(
_krisajenkins$remotedata$RemoteData$withDefault,
_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(
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;
switch (_p12.ctor) {
case 'Success':
return _krisajenkins$remotedata$RemoteData$Success(
successFn(_p12._0));
return _krisajenkins$remotedata$RemoteData$Success(_p12._0);
case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure(
errorFn(_p12._0));
f(_p12._0));
case 'Loading':
return _krisajenkins$remotedata$RemoteData$Loading;
default:
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(
function (f, data) {
var _p13 = data;
switch (_p13.ctor) {
var _p14 = data;
switch (_p14.ctor) {
case 'Success':
return f(_p13._0);
return f(_p14._0);
case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure(_p13._0);
return _krisajenkins$remotedata$RemoteData$Failure(_p14._0);
case 'NotAsked':
return _krisajenkins$remotedata$RemoteData$NotAsked;
default:
@ -12159,17 +12177,61 @@ var _krisajenkins$remotedata$RemoteData$andThen = F2(
});
var _krisajenkins$remotedata$RemoteData$andMap = F2(
function (wrappedValue, wrappedFunction) {
var _p14 = wrappedFunction;
switch (_p14.ctor) {
case 'Success':
return A2(_krisajenkins$remotedata$RemoteData$map, _p14._0, wrappedValue);
case 'Failure':
return _krisajenkins$remotedata$RemoteData$Failure(_p14._0);
case 'Loading':
var _p15 = {ctor: '_Tuple2', _0: wrappedFunction, _1: wrappedValue};
_v11_5:
do {
_v11_4:
do {
_v11_3:
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;
default:
return _krisajenkins$remotedata$RemoteData$NotAsked;
}
} while(false);
return _krisajenkins$remotedata$RemoteData$Loading;
} while(false);
return _krisajenkins$remotedata$RemoteData$NotAsked;
});
var _krisajenkins$remotedata$RemoteData$map2 = F3(
function (f, a, b) {
@ -12178,6 +12240,15 @@ var _krisajenkins$remotedata$RemoteData$map2 = F3(
b,
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(
function (f, a, b, c) {
return A2(
@ -12203,12 +12274,12 @@ var _krisajenkins$remotedata$RemoteData$append = F2(
});
var _krisajenkins$remotedata$RemoteData$update = F2(
function (f, remoteData) {
var _p15 = remoteData;
switch (_p15.ctor) {
var _p16 = remoteData;
switch (_p16.ctor) {
case 'Success':
var _p16 = f(_p15._0);
var first = _p16._0;
var second = _p16._1;
var _p17 = f(_p16._0);
var first = _p17._0;
var second = _p17._1;
return {
ctor: '_Tuple2',
_0: _krisajenkins$remotedata$RemoteData$Success(first),
@ -12221,7 +12292,7 @@ var _krisajenkins$remotedata$RemoteData$update = F2(
default:
return {
ctor: '_Tuple2',
_0: _krisajenkins$remotedata$RemoteData$Failure(_p15._0),
_0: _krisajenkins$remotedata$RemoteData$Failure(_p16._0),
_1: _elm_lang$core$Platform_Cmd$none
};
}