diff --git a/elm.js b/elm.js index 5c83502..ebfd43a 100644 --- a/elm.js +++ b/elm.js @@ -4394,6 +4394,107 @@ var _Bitwise_shiftRightZfBy = F2(function(offset, a) }); +// CREATE + +var _Regex_never = /.^/; + +var _Regex_fromStringWith = F2(function(options, string) +{ + var flags = 'g'; + if (options.multiline) { flags += 'm'; } + if (options.caseInsensitive) { flags += 'i'; } + + try + { + return $elm$core$Maybe$Just(new RegExp(string, flags)); + } + catch(error) + { + return $elm$core$Maybe$Nothing; + } +}); + + +// USE + +var _Regex_contains = F2(function(re, string) +{ + return string.match(re) !== null; +}); + + +var _Regex_findAtMost = F3(function(n, re, str) +{ + var out = []; + var number = 0; + var string = str; + var lastIndex = re.lastIndex; + var prevLastIndex = -1; + var result; + while (number++ < n && (result = re.exec(string))) + { + if (prevLastIndex == re.lastIndex) break; + var i = result.length - 1; + var subs = new Array(i); + while (i > 0) + { + var submatch = result[i]; + subs[--i] = submatch + ? $elm$core$Maybe$Just(submatch) + : $elm$core$Maybe$Nothing; + } + out.push(A4($elm$regex$Regex$Match, result[0], result.index, number, _List_fromArray(subs))); + prevLastIndex = re.lastIndex; + } + re.lastIndex = lastIndex; + return _List_fromArray(out); +}); + + +var _Regex_replaceAtMost = F4(function(n, re, replacer, string) +{ + var count = 0; + function jsReplacer(match) + { + if (count++ >= n) + { + return match; + } + var i = arguments.length - 3; + var submatches = new Array(i); + while (i > 0) + { + var submatch = arguments[i]; + submatches[--i] = submatch + ? $elm$core$Maybe$Just(submatch) + : $elm$core$Maybe$Nothing; + } + return replacer(A4($elm$regex$Regex$Match, match, arguments[arguments.length - 2], count, _List_fromArray(submatches))); + } + return string.replace(re, jsReplacer); +}); + +var _Regex_splitAtMost = F3(function(n, re, str) +{ + var string = str; + var out = []; + var start = re.lastIndex; + var restoreLastIndex = re.lastIndex; + while (n--) + { + var result = re.exec(string); + if (!result) break; + out.push(string.slice(start, result.index)); + start = re.lastIndex; + } + out.push(string.slice(start)); + re.lastIndex = restoreLastIndex; + return _List_fromArray(out); +}); + +var _Regex_infinity = Infinity; + + // SEND REQUEST @@ -4569,107 +4670,6 @@ function _Http_track(router, xhr, tracker) }); } -// CREATE - -var _Regex_never = /.^/; - -var _Regex_fromStringWith = F2(function(options, string) -{ - var flags = 'g'; - if (options.multiline) { flags += 'm'; } - if (options.caseInsensitive) { flags += 'i'; } - - try - { - return $elm$core$Maybe$Just(new RegExp(string, flags)); - } - catch(error) - { - return $elm$core$Maybe$Nothing; - } -}); - - -// USE - -var _Regex_contains = F2(function(re, string) -{ - return string.match(re) !== null; -}); - - -var _Regex_findAtMost = F3(function(n, re, str) -{ - var out = []; - var number = 0; - var string = str; - var lastIndex = re.lastIndex; - var prevLastIndex = -1; - var result; - while (number++ < n && (result = re.exec(string))) - { - if (prevLastIndex == re.lastIndex) break; - var i = result.length - 1; - var subs = new Array(i); - while (i > 0) - { - var submatch = result[i]; - subs[--i] = submatch - ? $elm$core$Maybe$Just(submatch) - : $elm$core$Maybe$Nothing; - } - out.push(A4($elm$regex$Regex$Match, result[0], result.index, number, _List_fromArray(subs))); - prevLastIndex = re.lastIndex; - } - re.lastIndex = lastIndex; - return _List_fromArray(out); -}); - - -var _Regex_replaceAtMost = F4(function(n, re, replacer, string) -{ - var count = 0; - function jsReplacer(match) - { - if (count++ >= n) - { - return match; - } - var i = arguments.length - 3; - var submatches = new Array(i); - while (i > 0) - { - var submatch = arguments[i]; - submatches[--i] = submatch - ? $elm$core$Maybe$Just(submatch) - : $elm$core$Maybe$Nothing; - } - return replacer(A4($elm$regex$Regex$Match, match, arguments[arguments.length - 2], count, _List_fromArray(submatches))); - } - return string.replace(re, jsReplacer); -}); - -var _Regex_splitAtMost = F3(function(n, re, str) -{ - var string = str; - var out = []; - var start = re.lastIndex; - var restoreLastIndex = re.lastIndex; - while (n--) - { - var result = re.exec(string); - if (!result) break; - out.push(string.slice(start, result.index)); - start = re.lastIndex; - } - out.push(string.slice(start)); - re.lastIndex = restoreLastIndex; - return _List_fromArray(out); -}); - -var _Regex_infinity = Infinity; - - function _Url_percentEncode(string) { return encodeURIComponent(string); @@ -5608,222 +5608,653 @@ var $author$project$Session$cred = function (session) { return $elm$core$Maybe$Nothing; } }; -var $krisajenkins$remotedata$RemoteData$Loading = {$: 'Loading'}; -var $author$project$Page$Calendar$Model = function (a) { - return {$: 'Model', a: a}; +var $author$project$Api$None = {$: 'None'}; +var $JonRowe$elm_jwt$Jwt$TokenDecodeError = function (a) { + return {$: 'TokenDecodeError', a: a}; }; -var $krisajenkins$remotedata$RemoteData$NotAsked = {$: 'NotAsked'}; -var $author$project$Page$Calendar$emptyForm = {date: '', heure: ''}; -var $author$project$Page$Calendar$GetAgendaResponse = function (a) { - return {$: 'GetAgendaResponse', a: a}; +var $JonRowe$elm_jwt$Jwt$TokenProcessingError = function (a) { + return {$: 'TokenProcessingError', a: a}; }; -var $dillonkearns$elm_graphql$Graphql$OptionalArgument$Absent = {$: 'Absent'}; var $elm$core$Basics$composeR = F3( function (f, g, x) { return g( f(x)); }); -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json = function (a) { - return {$: 'Json', a: a}; -}; -var $elm$json$Json$Encode$bool = _Json_wrap; -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$bool = function (value) { - return $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json( - $elm$json$Json$Encode$bool(value)); -}; -var $author$project$Api$Scalar$Date = function (a) { - return {$: 'Date', a: a}; -}; -var $author$project$Api$Scalar$Id = function (a) { - return {$: 'Id', a: a}; -}; -var $author$project$Api$Scalar$Money = function (a) { - return {$: 'Money', a: a}; -}; -var $author$project$Api$Scalar$Smallint = function (a) { - return {$: 'Smallint', a: a}; -}; -var $author$project$Api$Scalar$Timetz = function (a) { - return {$: 'Timetz', a: a}; +var $truqu$elm_base64$Base64$Decode$pad = function (input) { + var _v0 = $elm$core$String$length(input) % 4; + switch (_v0) { + case 3: + return input + '='; + case 2: + return input + '=='; + default: + return input; + } }; -var $elm$json$Json$Decode$bool = _Json_decodeBool; -var $elm$json$Json$Decode$float = _Json_decodeFloat; -var $elm$core$String$fromFloat = _String_fromNumber; -var $elm$json$Json$Decode$int = _Json_decodeInt; -var $elm$json$Json$Decode$oneOf = _Json_oneOf; -var $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder = $elm$json$Json$Decode$oneOf( - _List_fromArray( - [ - $elm$json$Json$Decode$string, - A2($elm$json$Json$Decode$map, $elm$core$String$fromFloat, $elm$json$Json$Decode$float), - A2($elm$json$Json$Decode$map, $elm$core$String$fromInt, $elm$json$Json$Decode$int), - A2( - $elm$json$Json$Decode$map, - function (bool) { - if (bool) { - return 'true'; - } else { - return 'false'; - } - }, - $elm$json$Json$Decode$bool) - ])); -var $elm$json$Json$Encode$string = _Json_wrap; -var $author$project$Api$Scalar$defaultCodecs = { - codecDate: { - decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Date, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), - encoder: function (_v0) { - var raw = _v0.a; - return $elm$json$Json$Encode$string(raw); - } - }, - codecId: { - decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Id, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), - encoder: function (_v1) { - var raw = _v1.a; - return $elm$json$Json$Encode$string(raw); - } - }, - codecMoney: { - decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Money, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), - encoder: function (_v2) { - var raw = _v2.a; - return $elm$json$Json$Encode$string(raw); - } - }, - codecSmallint: { - decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Smallint, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), - encoder: function (_v3) { - var raw = _v3.a; - return $elm$json$Json$Encode$string(raw); - } - }, - codecTimetz: { - decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Timetz, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), - encoder: function (_v4) { - var raw = _v4.a; - return $elm$json$Json$Encode$string(raw); - } +var $truqu$elm_base64$Base64$Decode$charToInt = function (_char) { + switch (_char.valueOf()) { + case 'A': + return 0; + case 'B': + return 1; + case 'C': + return 2; + case 'D': + return 3; + case 'E': + return 4; + case 'F': + return 5; + case 'G': + return 6; + case 'H': + return 7; + case 'I': + return 8; + case 'J': + return 9; + case 'K': + return 10; + case 'L': + return 11; + case 'M': + return 12; + case 'N': + return 13; + case 'O': + return 14; + case 'P': + return 15; + case 'Q': + return 16; + case 'R': + return 17; + case 'S': + return 18; + case 'T': + return 19; + case 'U': + return 20; + case 'V': + return 21; + case 'W': + return 22; + case 'X': + return 23; + case 'Y': + return 24; + case 'Z': + return 25; + case 'a': + return 26; + case 'b': + return 27; + case 'c': + return 28; + case 'd': + return 29; + case 'e': + return 30; + case 'f': + return 31; + case 'g': + return 32; + case 'h': + return 33; + case 'i': + return 34; + case 'j': + return 35; + case 'k': + return 36; + case 'l': + return 37; + case 'm': + return 38; + case 'n': + return 39; + case 'o': + return 40; + case 'p': + return 41; + case 'q': + return 42; + case 'r': + return 43; + case 's': + return 44; + case 't': + return 45; + case 'u': + return 46; + case 'v': + return 47; + case 'w': + return 48; + case 'x': + return 49; + case 'y': + return 50; + case 'z': + return 51; + case '0': + return 52; + case '1': + return 53; + case '2': + return 54; + case '3': + return 55; + case '4': + return 56; + case '5': + return 57; + case '6': + return 58; + case '7': + return 59; + case '8': + return 60; + case '9': + return 61; + case '+': + return 62; + case '/': + return 63; + default: + return 0; } }; -var $author$project$Api$Scalar$Codecs = function (a) { - return {$: 'Codecs', a: a}; -}; -var $author$project$Api$Scalar$defineCodecs = function (definitions) { - return $author$project$Api$Scalar$Codecs(definitions); -}; -var $author$project$Api$ScalarCodecs$codecs = $author$project$Api$Scalar$defineCodecs( - {codecDate: $author$project$Api$Scalar$defaultCodecs.codecDate, codecId: $author$project$Api$Scalar$defaultCodecs.codecId, codecMoney: $author$project$Api$Scalar$defaultCodecs.codecMoney, codecSmallint: $author$project$Api$Scalar$defaultCodecs.codecSmallint, codecTimetz: $author$project$Api$Scalar$defaultCodecs.codecTimetz}); -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$List = function (a) { - return {$: 'List', a: a}; +var $elm$core$Bitwise$or = _Bitwise_or; +var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy; +var $elm$core$Bitwise$and = _Bitwise_and; +var $elm$core$String$cons = _String_cons; +var $elm$core$String$fromChar = function (_char) { + return A2($elm$core$String$cons, _char, ''); }; -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$list = F2( - function (toValue, value) { - return $dillonkearns$elm_graphql$Graphql$Internal$Encode$List( - A2($elm$core$List$map, toValue, value)); +var $elm$core$Char$fromCode = _Char_fromCode; +var $truqu$elm_base64$Base64$Decode$intToString = A2($elm$core$Basics$composeR, $elm$core$Char$fromCode, $elm$core$String$fromChar); +var $truqu$elm_base64$Base64$Decode$add = F2( + function (_char, _v0) { + var curr = _v0.a; + var need = _v0.b; + var res = _v0.c; + var shiftAndAdd = function (_int) { + return (63 & _int) | (curr << 6); + }; + return (!need) ? ((!(128 & _char)) ? _Utils_Tuple3( + 0, + 0, + _Utils_ap( + res, + $truqu$elm_base64$Base64$Decode$intToString(_char))) : (((224 & _char) === 192) ? _Utils_Tuple3(31 & _char, 1, res) : (((240 & _char) === 224) ? _Utils_Tuple3(15 & _char, 2, res) : _Utils_Tuple3(7 & _char, 3, res)))) : ((need === 1) ? _Utils_Tuple3( + 0, + 0, + _Utils_ap( + res, + $truqu$elm_base64$Base64$Decode$intToString( + shiftAndAdd(_char)))) : _Utils_Tuple3( + shiftAndAdd(_char), + need - 1, + res)); }); -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$Object = function (a) { - return {$: 'Object', a: a}; -}; -var $elm$core$List$maybeCons = F3( - function (f, mx, xs) { - var _v0 = f(mx); - if (_v0.$ === 'Just') { - var x = _v0.a; - return A2($elm$core$List$cons, x, xs); - } else { - return xs; - } +var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; +var $truqu$elm_base64$Base64$Decode$toUTF16 = F2( + function (_char, acc) { + return _Utils_Tuple3( + 0, + 0, + A2( + $truqu$elm_base64$Base64$Decode$add, + 255 & (_char >>> 0), + A2( + $truqu$elm_base64$Base64$Decode$add, + 255 & (_char >>> 8), + A2($truqu$elm_base64$Base64$Decode$add, 255 & (_char >>> 16), acc)))); }); -var $elm$core$List$filterMap = F2( - function (f, xs) { - return A3( - $elm$core$List$foldr, - $elm$core$List$maybeCons(f), - _List_Nil, - xs); +var $truqu$elm_base64$Base64$Decode$chomp = F2( + function (char_, _v0) { + var curr = _v0.a; + var cnt = _v0.b; + var utf8ToUtf16 = _v0.c; + var _char = $truqu$elm_base64$Base64$Decode$charToInt(char_); + if (cnt === 3) { + return A2($truqu$elm_base64$Base64$Decode$toUTF16, curr | _char, utf8ToUtf16); + } else { + return _Utils_Tuple3((_char << ((3 - cnt) * 6)) | curr, cnt + 1, utf8ToUtf16); + } }); -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$maybeObject = function (maybeValues) { - return $dillonkearns$elm_graphql$Graphql$Internal$Encode$Object( +var $elm$core$String$foldl = _String_foldl; +var $truqu$elm_base64$Base64$Decode$initial = _Utils_Tuple3( + 0, + 0, + _Utils_Tuple3(0, 0, '')); +var $elm$core$Result$map = F2( + function (func, ra) { + if (ra.$ === 'Ok') { + var a = ra.a; + return $elm$core$Result$Ok( + func(a)); + } else { + var e = ra.a; + return $elm$core$Result$Err(e); + } + }); +var $elm$core$Basics$negate = function (n) { + return -n; +}; +var $elm$core$String$dropRight = F2( + function (n, string) { + return (n < 1) ? string : A3($elm$core$String$slice, 0, -n, string); + }); +var $elm$core$String$endsWith = _String_endsWith; +var $truqu$elm_base64$Base64$Decode$stripNulls = F2( + function (input, output) { + return A2($elm$core$String$endsWith, '==', input) ? A2($elm$core$String$dropRight, 2, output) : (A2($elm$core$String$endsWith, '=', input) ? A2($elm$core$String$dropRight, 1, output) : output); + }); +var $elm$regex$Regex$Match = F4( + function (match, index, number, submatches) { + return {index: index, match: match, number: number, submatches: submatches}; + }); +var $elm$regex$Regex$contains = _Regex_contains; +var $elm$regex$Regex$fromStringWith = _Regex_fromStringWith; +var $elm$regex$Regex$fromString = function (string) { + return A2( + $elm$regex$Regex$fromStringWith, + {caseInsensitive: false, multiline: false}, + string); +}; +var $elm$regex$Regex$never = _Regex_never; +var $elm$core$Maybe$withDefault = F2( + function (_default, maybe) { + if (maybe.$ === 'Just') { + var value = maybe.a; + return value; + } else { + return _default; + } + }); +var $truqu$elm_base64$Base64$Decode$validBase64Regex = A2( + $elm$core$Maybe$withDefault, + $elm$regex$Regex$never, + $elm$regex$Regex$fromString('^([A-Za-z0-9\\/+]{4})*([A-Za-z0-9\\/+]{2}[A-Za-z0-9\\/+=]{2})?$')); +var $truqu$elm_base64$Base64$Decode$validate = function (input) { + return A2($elm$regex$Regex$contains, $truqu$elm_base64$Base64$Decode$validBase64Regex, input) ? $elm$core$Result$Ok(input) : $elm$core$Result$Err('Invalid base64'); +}; +var $truqu$elm_base64$Base64$Decode$wrapUp = function (_v0) { + var _v1 = _v0.c; + var need = _v1.b; + var res = _v1.c; + return (need > 0) ? $elm$core$Result$Err('Invalid UTF-16') : $elm$core$Result$Ok(res); +}; +var $truqu$elm_base64$Base64$Decode$validateAndDecode = function (input) { + return A2( + $elm$core$Result$map, + $truqu$elm_base64$Base64$Decode$stripNulls(input), A2( - $elm$core$List$filterMap, - function (_v0) { - var key = _v0.a; - var value = _v0.b; - if (value.$ === 'Just') { - var actualValue = value.a; - return $elm$core$Maybe$Just( - _Utils_Tuple2(key, actualValue)); + $elm$core$Result$andThen, + A2( + $elm$core$Basics$composeR, + A2($elm$core$String$foldl, $truqu$elm_base64$Base64$Decode$chomp, $truqu$elm_base64$Base64$Decode$initial), + $truqu$elm_base64$Base64$Decode$wrapUp), + $truqu$elm_base64$Base64$Decode$validate(input))); +}; +var $truqu$elm_base64$Base64$Decode$decode = A2($elm$core$Basics$composeR, $truqu$elm_base64$Base64$Decode$pad, $truqu$elm_base64$Base64$Decode$validateAndDecode); +var $truqu$elm_base64$Base64$decode = $truqu$elm_base64$Base64$Decode$decode; +var $elm$core$String$concat = function (strings) { + return A2($elm$core$String$join, '', strings); +}; +var $elm$core$Basics$modBy = _Basics_modBy; +var $JonRowe$elm_jwt$Jwt$fixlength = function (s) { + var _v0 = A2( + $elm$core$Basics$modBy, + 4, + $elm$core$String$length(s)); + switch (_v0) { + case 0: + return $elm$core$Result$Ok(s); + case 2: + return $elm$core$Result$Ok( + $elm$core$String$concat( + _List_fromArray( + [s, '==']))); + case 3: + return $elm$core$Result$Ok( + $elm$core$String$concat( + _List_fromArray( + [s, '=']))); + default: + return $elm$core$Result$Err( + $JonRowe$elm_jwt$Jwt$TokenProcessingError('Wrong length')); + } +}; +var $elm$core$String$map = _String_map; +var $JonRowe$elm_jwt$Jwt$unurl = function () { + var fix = function (c) { + switch (c.valueOf()) { + case '-': + return _Utils_chr('+'); + case '_': + return _Utils_chr('/'); + default: + return c; + } + }; + return $elm$core$String$map(fix); +}(); +var $JonRowe$elm_jwt$Jwt$getTokenBody = function (token) { + var processor = A2( + $elm$core$Basics$composeR, + $JonRowe$elm_jwt$Jwt$unurl, + A2( + $elm$core$Basics$composeR, + $elm$core$String$split('.'), + $elm$core$List$map($JonRowe$elm_jwt$Jwt$fixlength))); + var _v0 = processor(token); + _v0$2: + while (true) { + if (_v0.b && _v0.b.b) { + if (_v0.b.a.$ === 'Err') { + if (_v0.b.b.b && (!_v0.b.b.b.b)) { + var _v1 = _v0.b; + var e = _v1.a.a; + var _v2 = _v1.b; + return $elm$core$Result$Err(e); } else { - return $elm$core$Maybe$Nothing; + break _v0$2; } - }, - maybeValues)); + } else { + if (_v0.b.b.b && (!_v0.b.b.b.b)) { + var _v3 = _v0.b; + var encBody = _v3.a.a; + var _v4 = _v3.b; + return $elm$core$Result$Ok(encBody); + } else { + break _v0$2; + } + } + } else { + break _v0$2; + } + } + return $elm$core$Result$Err( + $JonRowe$elm_jwt$Jwt$TokenProcessingError('Token has invalid shape')); }; -var $elm$json$Json$Encode$null = _Json_encodeNull; -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$null = $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json($elm$json$Json$Encode$null); -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional = F2( - function (optionalValue, toValue) { - switch (optionalValue.$) { - case 'Present': - var value = optionalValue.a; - return $elm$core$Maybe$Just( - toValue(value)); - case 'Absent': - return $elm$core$Maybe$Nothing; - default: - return $elm$core$Maybe$Just($dillonkearns$elm_graphql$Graphql$Internal$Encode$null); +var $elm$core$Result$mapError = F2( + function (f, result) { + if (result.$ === 'Ok') { + var v = result.a; + return $elm$core$Result$Ok(v); + } else { + var e = result.a; + return $elm$core$Result$Err( + f(e)); } }); -var $dillonkearns$elm_graphql$Graphql$Internal$Encode$fromJson = function (jsonValue) { - return $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json(jsonValue); -}; -var $author$project$Api$Scalar$unwrapEncoder = F2( - function (getter, _v0) { - var unwrappedCodecs = _v0.a; - return A2( +var $JonRowe$elm_jwt$Jwt$decodeToken = function (dec) { + return A2( + $elm$core$Basics$composeR, + $JonRowe$elm_jwt$Jwt$getTokenBody, + A2( $elm$core$Basics$composeR, - getter(unwrappedCodecs).encoder, - $dillonkearns$elm_graphql$Graphql$Internal$Encode$fromJson); - }); -var $author$project$Api$InputObject$encodeDate_comparison_exp = function (input) { - return $dillonkearns$elm_graphql$Graphql$Internal$Encode$maybeObject( - _List_fromArray( - [ - _Utils_Tuple2( - '_eq', - A2( - $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, - input.eq_, - A2( - $author$project$Api$Scalar$unwrapEncoder, - function ($) { - return $.codecDate; - }, - $author$project$Api$ScalarCodecs$codecs))), - _Utils_Tuple2( - '_gt', + $elm$core$Result$andThen( A2( - $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, - input.gt_, - A2( - $author$project$Api$Scalar$unwrapEncoder, - function ($) { - return $.codecDate; - }, - $author$project$Api$ScalarCodecs$codecs))), - _Utils_Tuple2( - '_gte', + $elm$core$Basics$composeR, + $truqu$elm_base64$Base64$decode, + $elm$core$Result$mapError($JonRowe$elm_jwt$Jwt$TokenProcessingError))), + $elm$core$Result$andThen( A2( - $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, - input.gte_, - A2( - $author$project$Api$Scalar$unwrapEncoder, - function ($) { - return $.codecDate; - }, - $author$project$Api$ScalarCodecs$codecs))), - _Utils_Tuple2( + $elm$core$Basics$composeR, + $elm$json$Json$Decode$decodeString(dec), + $elm$core$Result$mapError($JonRowe$elm_jwt$Jwt$TokenDecodeError))))); +}; +var $author$project$Api$Psy = {$: 'Psy'}; +var $author$project$Api$User = {$: 'User'}; +var $elm$json$Json$Decode$at = F2( + function (fields, decoder) { + return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields); + }); +var $author$project$Api$getRole = A2( + $elm$json$Json$Decode$map, + function (string) { + return (string === 'Psy') ? $author$project$Api$Psy : ((string === 'user') ? $author$project$Api$User : $author$project$Api$None); + }, + A2( + $elm$json$Json$Decode$at, + _List_fromArray( + ['https://hasura.io/jwt/claims', 'x-hasura-default-role']), + $elm$json$Json$Decode$string)); +var $elm$core$Result$withDefault = F2( + function (def, result) { + if (result.$ === 'Ok') { + var a = result.a; + return a; + } else { + return def; + } + }); +var $author$project$Api$getRoleFromMaybeCred = function (maybecred) { + if (maybecred.$ === 'Just') { + var token = maybecred.a.a; + return A2( + $elm$core$Result$withDefault, + $author$project$Api$None, + A2($JonRowe$elm_jwt$Jwt$decodeToken, $author$project$Api$getRole, token)); + } else { + return $author$project$Api$None; + } +}; +var $krisajenkins$remotedata$RemoteData$Loading = {$: 'Loading'}; +var $author$project$Page$Calendar$Model = function (a) { + return {$: 'Model', a: a}; +}; +var $krisajenkins$remotedata$RemoteData$NotAsked = {$: 'NotAsked'}; +var $author$project$Page$Calendar$emptyForm = {date: '', heure: ''}; +var $author$project$Page$Calendar$GetAgendaResponse = function (a) { + return {$: 'GetAgendaResponse', a: a}; +}; +var $dillonkearns$elm_graphql$Graphql$OptionalArgument$Absent = {$: 'Absent'}; +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json = function (a) { + return {$: 'Json', a: a}; +}; +var $elm$json$Json$Encode$bool = _Json_wrap; +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$bool = function (value) { + return $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json( + $elm$json$Json$Encode$bool(value)); +}; +var $author$project$Api$Scalar$Date = function (a) { + return {$: 'Date', a: a}; +}; +var $author$project$Api$Scalar$Id = function (a) { + return {$: 'Id', a: a}; +}; +var $author$project$Api$Scalar$Money = function (a) { + return {$: 'Money', a: a}; +}; +var $author$project$Api$Scalar$Smallint = function (a) { + return {$: 'Smallint', a: a}; +}; +var $author$project$Api$Scalar$Timetz = function (a) { + return {$: 'Timetz', a: a}; +}; +var $elm$json$Json$Decode$bool = _Json_decodeBool; +var $elm$json$Json$Decode$float = _Json_decodeFloat; +var $elm$core$String$fromFloat = _String_fromNumber; +var $elm$json$Json$Decode$int = _Json_decodeInt; +var $elm$json$Json$Decode$oneOf = _Json_oneOf; +var $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder = $elm$json$Json$Decode$oneOf( + _List_fromArray( + [ + $elm$json$Json$Decode$string, + A2($elm$json$Json$Decode$map, $elm$core$String$fromFloat, $elm$json$Json$Decode$float), + A2($elm$json$Json$Decode$map, $elm$core$String$fromInt, $elm$json$Json$Decode$int), + A2( + $elm$json$Json$Decode$map, + function (bool) { + if (bool) { + return 'true'; + } else { + return 'false'; + } + }, + $elm$json$Json$Decode$bool) + ])); +var $elm$json$Json$Encode$string = _Json_wrap; +var $author$project$Api$Scalar$defaultCodecs = { + codecDate: { + decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Date, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), + encoder: function (_v0) { + var raw = _v0.a; + return $elm$json$Json$Encode$string(raw); + } + }, + codecId: { + decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Id, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), + encoder: function (_v1) { + var raw = _v1.a; + return $elm$json$Json$Encode$string(raw); + } + }, + codecMoney: { + decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Money, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), + encoder: function (_v2) { + var raw = _v2.a; + return $elm$json$Json$Encode$string(raw); + } + }, + codecSmallint: { + decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Smallint, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), + encoder: function (_v3) { + var raw = _v3.a; + return $elm$json$Json$Encode$string(raw); + } + }, + codecTimetz: { + decoder: A2($elm$json$Json$Decode$map, $author$project$Api$Scalar$Timetz, $dillonkearns$elm_graphql$Graphql$Internal$Builder$Object$scalarDecoder), + encoder: function (_v4) { + var raw = _v4.a; + return $elm$json$Json$Encode$string(raw); + } + } +}; +var $author$project$Api$Scalar$Codecs = function (a) { + return {$: 'Codecs', a: a}; +}; +var $author$project$Api$Scalar$defineCodecs = function (definitions) { + return $author$project$Api$Scalar$Codecs(definitions); +}; +var $author$project$Api$ScalarCodecs$codecs = $author$project$Api$Scalar$defineCodecs( + {codecDate: $author$project$Api$Scalar$defaultCodecs.codecDate, codecId: $author$project$Api$Scalar$defaultCodecs.codecId, codecMoney: $author$project$Api$Scalar$defaultCodecs.codecMoney, codecSmallint: $author$project$Api$Scalar$defaultCodecs.codecSmallint, codecTimetz: $author$project$Api$Scalar$defaultCodecs.codecTimetz}); +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$List = function (a) { + return {$: 'List', a: a}; +}; +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$list = F2( + function (toValue, value) { + return $dillonkearns$elm_graphql$Graphql$Internal$Encode$List( + A2($elm$core$List$map, toValue, value)); + }); +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$Object = function (a) { + return {$: 'Object', a: a}; +}; +var $elm$core$List$maybeCons = F3( + function (f, mx, xs) { + var _v0 = f(mx); + if (_v0.$ === 'Just') { + var x = _v0.a; + return A2($elm$core$List$cons, x, xs); + } else { + return xs; + } + }); +var $elm$core$List$filterMap = F2( + function (f, xs) { + return A3( + $elm$core$List$foldr, + $elm$core$List$maybeCons(f), + _List_Nil, + xs); + }); +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$maybeObject = function (maybeValues) { + return $dillonkearns$elm_graphql$Graphql$Internal$Encode$Object( + A2( + $elm$core$List$filterMap, + function (_v0) { + var key = _v0.a; + var value = _v0.b; + if (value.$ === 'Just') { + var actualValue = value.a; + return $elm$core$Maybe$Just( + _Utils_Tuple2(key, actualValue)); + } else { + return $elm$core$Maybe$Nothing; + } + }, + maybeValues)); +}; +var $elm$json$Json$Encode$null = _Json_encodeNull; +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$null = $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json($elm$json$Json$Encode$null); +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional = F2( + function (optionalValue, toValue) { + switch (optionalValue.$) { + case 'Present': + var value = optionalValue.a; + return $elm$core$Maybe$Just( + toValue(value)); + case 'Absent': + return $elm$core$Maybe$Nothing; + default: + return $elm$core$Maybe$Just($dillonkearns$elm_graphql$Graphql$Internal$Encode$null); + } + }); +var $dillonkearns$elm_graphql$Graphql$Internal$Encode$fromJson = function (jsonValue) { + return $dillonkearns$elm_graphql$Graphql$Internal$Encode$Json(jsonValue); +}; +var $author$project$Api$Scalar$unwrapEncoder = F2( + function (getter, _v0) { + var unwrappedCodecs = _v0.a; + return A2( + $elm$core$Basics$composeR, + getter(unwrappedCodecs).encoder, + $dillonkearns$elm_graphql$Graphql$Internal$Encode$fromJson); + }); +var $author$project$Api$InputObject$encodeDate_comparison_exp = function (input) { + return $dillonkearns$elm_graphql$Graphql$Internal$Encode$maybeObject( + _List_fromArray( + [ + _Utils_Tuple2( + '_eq', + A2( + $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, + input.eq_, + A2( + $author$project$Api$Scalar$unwrapEncoder, + function ($) { + return $.codecDate; + }, + $author$project$Api$ScalarCodecs$codecs))), + _Utils_Tuple2( + '_gt', + A2( + $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, + input.gt_, + A2( + $author$project$Api$Scalar$unwrapEncoder, + function ($) { + return $.codecDate; + }, + $author$project$Api$ScalarCodecs$codecs))), + _Utils_Tuple2( + '_gte', + A2( + $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, + input.gte_, + A2( + $author$project$Api$Scalar$unwrapEncoder, + function ($) { + return $.codecDate; + }, + $author$project$Api$ScalarCodecs$codecs))), + _Utils_Tuple2( '_in', A2( $dillonkearns$elm_graphql$Graphql$Internal$Encode$optional, @@ -6297,15 +6728,6 @@ var $elm$core$Maybe$map = F2( return $elm$core$Maybe$Nothing; } }); -var $elm$core$Maybe$withDefault = F2( - function (_default, maybe) { - if (maybe.$ === 'Just') { - var value = maybe.a; - return value; - } else { - return _default; - } - }); var $dillonkearns$elm_graphql$Graphql$Internal$Encode$maybe = function (encoder) { return A2( $elm$core$Basics$composeR, @@ -6624,24 +7046,17 @@ var $elm$core$List$append = F2( return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); } }); -var $elm$core$String$concat = function (strings) { - return A2($elm$core$String$join, '', strings); -}; var $Skinney$murmur3$Murmur3$HashData = F4( function (shift, seed, hash, charsProcessed) { return {charsProcessed: charsProcessed, hash: hash, seed: seed, shift: shift}; }); var $Skinney$murmur3$Murmur3$c1 = 3432918353; var $Skinney$murmur3$Murmur3$c2 = 461845907; -var $elm$core$Bitwise$and = _Bitwise_and; -var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy; -var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; var $Skinney$murmur3$Murmur3$multiplyBy = F2( function (b, a) { return ((a & 65535) * b) + ((((a >>> 16) * b) & 65535) << 16); }); var $elm$core$Basics$neq = _Utils_notEqual; -var $elm$core$Bitwise$or = _Bitwise_or; var $Skinney$murmur3$Murmur3$rotlBy = F2( function (b, a) { return (a << b) | (a >>> (32 - b)); @@ -6660,7 +7075,6 @@ var $Skinney$murmur3$Murmur3$finalize = function (data) { var h2 = A2($Skinney$murmur3$Murmur3$multiplyBy, 3266489909, h1 ^ (h1 >>> 13)); return (h2 ^ (h2 >>> 16)) >>> 0; }; -var $elm$core$String$foldl = _String_foldl; var $Skinney$murmur3$Murmur3$mix = F2( function (h1, k1) { return A2( @@ -7820,13 +8234,6 @@ var $elm$core$Basics$composeL = F3( return g( f(x)); }); -var $elm$core$Basics$negate = function (n) { - return -n; -}; -var $elm$core$String$dropRight = F2( - function (n, string) { - return (n < 1) ? string : A3($elm$core$String$slice, 0, -n, string); - }); var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep); var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet; var $elm$core$Array$getHelp = F3( @@ -7917,18 +8324,6 @@ var $elm$core$Array$fromList = function (list) { return A3($elm$core$Array$fromListHelp, list, _List_Nil, 0); } }; -var $elm$regex$Regex$Match = F4( - function (match, index, number, submatches) { - return {index: index, match: match, number: number, submatches: submatches}; - }); -var $elm$regex$Regex$fromStringWith = _Regex_fromStringWith; -var $elm$regex$Regex$fromString = function (string) { - return A2( - $elm$regex$Regex$fromStringWith, - {caseInsensitive: false, multiline: false}, - string); -}; -var $elm$regex$Regex$never = _Regex_never; var $lukewestby$elm_string_interpolate$String$Interpolate$interpolationRegex = A2( $elm$core$Maybe$withDefault, $elm$regex$Regex$never, @@ -8632,6 +9027,7 @@ var $author$project$Page$Patients$init = function (session) { }; var $elm$browser$Browser$Navigation$load = _Browser_load; var $elm$core$Debug$log = _Debug_log; +var $author$project$Main$loginUrl = 'https://psy-app.eu.auth0.com/' + ('login?client=rcd2TG98zW4rEN4mq3PgxEe3hMQfPDWf' + ('&protocol=oauth2' + ('&response_type=token%20id_token' + ('&redirect_uri=http://localhost:8000' + '&scope=openid%20profile')))); var $elm$core$Maybe$destruct = F3( function (_default, func, maybe) { if (maybe.$ === 'Just') { @@ -8785,11 +9181,26 @@ var $author$project$Main$changeRouteTo = F2( $author$project$Page$Calendar$init(session)); case 'Patients': var _v4 = _v1.a; - return A3( - $author$project$Main$updateWith, - $author$project$Main$Patients, - $author$project$Main$GotPatientsMsg, - $author$project$Page$Patients$init(session)); + var _v5 = $author$project$Api$getRoleFromMaybeCred(cred); + if (_v5.$ === 'Psy') { + return A3( + $author$project$Main$updateWith, + $author$project$Main$Patients, + $author$project$Main$GotPatientsMsg, + $author$project$Page$Patients$init(session)); + } else { + return _Utils_Tuple2( + $author$project$Main$Redirect(session), + $elm$core$Platform$Cmd$batch( + _List_fromArray( + [ + A2( + $author$project$Route$replaceUrl, + $author$project$Session$navKey(session), + $author$project$Route$Calendar), + A2($elm$core$Task$perform, $author$project$Main$CheckToken, $elm$time$Time$now) + ]))); + } default: return _Utils_Tuple2( $author$project$Main$Redirect(session), @@ -8815,12 +9226,12 @@ var $author$project$Main$changeRouteTo = F2( } else { return _Utils_Tuple2( $author$project$Main$Redirect(session), - $elm$browser$Browser$Navigation$load('https://psy-app.eu.auth0.com/login?client=rcd2TG98zW4rEN4mq3PgxEe3hMQfPDWf&protocol=oauth2&response_type=token%20id_token&scope=openid%20profile')); + $elm$browser$Browser$Navigation$load($author$project$Main$loginUrl)); } } else { return _Utils_Tuple2( $author$project$Main$Redirect(session), - $elm$browser$Browser$Navigation$load('https://psy-app.eu.auth0.com/login?client=rcd2TG98zW4rEN4mq3PgxEe3hMQfPDWf&protocol=oauth2&response_type=token%20id_token&scope=openid%20profile')); + $elm$browser$Browser$Navigation$load($author$project$Main$loginUrl)); } } }); @@ -9026,828 +9437,470 @@ var $author$project$Route$accessTokenUrlParser = function (maybeString) { } else { break _v0$5; } - } - return info; - }), - A5($kkpoon$elm_auth0_urlparser$Auth0$UrlParser$Auth0CallbackInfo, '', $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing), - A2( - $elm$core$List$map, - $elm$core$String$split('='), - A2($elm$core$String$split, '&', fragment)))) : $elm$core$Maybe$Nothing; -}; -var $elm$url$Url$Parser$Parser = function (a) { - return {$: 'Parser', a: a}; -}; -var $elm$url$Url$Parser$fragment = function (toFrag) { - return $elm$url$Url$Parser$Parser( - function (_v0) { - var visited = _v0.visited; - var unvisited = _v0.unvisited; - var params = _v0.params; - var frag = _v0.frag; - var value = _v0.value; - return _List_fromArray( - [ - A5( - $elm$url$Url$Parser$State, - visited, - unvisited, - params, - frag, - value( - toFrag(frag))) - ]); - }); -}; -var $elm$url$Url$Parser$mapState = F2( - function (func, _v0) { - var visited = _v0.visited; - var unvisited = _v0.unvisited; - var params = _v0.params; - var frag = _v0.frag; - var value = _v0.value; - return A5( - $elm$url$Url$Parser$State, - visited, - unvisited, - params, - frag, - func(value)); - }); -var $elm$url$Url$Parser$map = F2( - function (subValue, _v0) { - var parseArg = _v0.a; - return $elm$url$Url$Parser$Parser( - function (_v1) { - var visited = _v1.visited; - var unvisited = _v1.unvisited; - var params = _v1.params; - var frag = _v1.frag; - var value = _v1.value; - return A2( - $elm$core$List$map, - $elm$url$Url$Parser$mapState(value), - parseArg( - A5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue))); - }); - }); -var $elm$core$List$concat = function (lists) { - return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); -}; -var $elm$core$List$concatMap = F2( - function (f, list) { - return $elm$core$List$concat( - A2($elm$core$List$map, f, list)); - }); -var $elm$url$Url$Parser$oneOf = function (parsers) { - return $elm$url$Url$Parser$Parser( - function (state) { - return A2( - $elm$core$List$concatMap, - function (_v0) { - var parser = _v0.a; - return parser(state); - }, - parsers); - }); -}; -var $elm$url$Url$Parser$s = function (str) { - return $elm$url$Url$Parser$Parser( - function (_v0) { - var visited = _v0.visited; - var unvisited = _v0.unvisited; - var params = _v0.params; - var frag = _v0.frag; - var value = _v0.value; - if (!unvisited.b) { - return _List_Nil; - } else { - var next = unvisited.a; - var rest = unvisited.b; - return _Utils_eq(next, str) ? _List_fromArray( - [ - A5( - $elm$url$Url$Parser$State, - A2($elm$core$List$cons, next, visited), - rest, - params, - frag, - value) - ]) : _List_Nil; - } - }); -}; -var $author$project$Route$parser = $elm$url$Url$Parser$oneOf( - _List_fromArray( - [ - A2( - $elm$url$Url$Parser$map, - $author$project$Route$Root, - $elm$url$Url$Parser$fragment($author$project$Route$accessTokenUrlParser)), - A2( - $elm$url$Url$Parser$map, - $author$project$Route$Calendar, - $elm$url$Url$Parser$s('calendar')), - A2( - $elm$url$Url$Parser$map, - $author$project$Route$Patients, - $elm$url$Url$Parser$s('patients')), - A2( - $elm$url$Url$Parser$map, - $author$project$Route$Logout, - $elm$url$Url$Parser$s('logout')) - ])); -var $author$project$Route$fromUrl = function (url) { - return A2( - $elm$url$Url$Parser$parse, - $author$project$Route$parser, - A2($elm$core$Debug$log, 'url', url)); -}; -var $author$project$Main$init = F3( - function (maybeCred, url, navKey) { - var session = A2($author$project$Session$fromCred, navKey, maybeCred); - return A2( - $author$project$Main$changeRouteTo, - $author$project$Route$fromUrl(url), - $author$project$Main$Redirect(session)); - }); -var $author$project$Main$GotSession = function (a) { - return {$: 'GotSession', a: a}; -}; -var $elm$core$Platform$Sub$batch = _Platform_batch; -var $author$project$Api$decodeFromChange = function (val) { - return $elm$core$Result$toMaybe( - A2($elm$json$Json$Decode$decodeValue, $author$project$Api$credDecoder, val)); -}; -var $author$project$Api$onStoreChange = _Platform_incomingPort('onStoreChange', $elm$json$Json$Decode$value); -var $author$project$Api$credChanges = function (toMsg) { - return $author$project$Api$onStoreChange( - function (value) { - return toMsg( - $author$project$Api$decodeFromChange(value)); - }); -}; -var $author$project$Session$changes = F2( - function (toMsg, key) { - return $author$project$Api$credChanges( - function (maybeCred) { - return toMsg( - A2($author$project$Session$fromCred, key, maybeCred)); - }); - }); -var $elm$time$Time$Every = F2( - function (a, b) { - return {$: 'Every', a: a, b: b}; - }); -var $elm$time$Time$State = F2( - function (taggers, processes) { - return {processes: processes, taggers: taggers}; - }); -var $elm$time$Time$init = $elm$core$Task$succeed( - A2($elm$time$Time$State, $elm$core$Dict$empty, $elm$core$Dict$empty)); -var $elm$time$Time$addMySub = F2( - function (_v0, state) { - var interval = _v0.a; - var tagger = _v0.b; - var _v1 = A2($elm$core$Dict$get, interval, state); - if (_v1.$ === 'Nothing') { - return A3( - $elm$core$Dict$insert, - interval, - _List_fromArray( - [tagger]), - state); - } else { - var taggers = _v1.a; - return A3( - $elm$core$Dict$insert, - interval, - A2($elm$core$List$cons, tagger, taggers), - state); - } - }); -var $elm$core$Dict$foldl = F3( - function (func, acc, dict) { - foldl: - while (true) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return acc; - } else { - var key = dict.b; - var value = dict.c; - var left = dict.d; - var right = dict.e; - var $temp$func = func, - $temp$acc = A3( - func, - key, - value, - A3($elm$core$Dict$foldl, func, acc, left)), - $temp$dict = right; - func = $temp$func; - acc = $temp$acc; - dict = $temp$dict; - continue foldl; - } - } - }); -var $elm$core$Dict$merge = F6( - function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) { - var stepState = F3( - function (rKey, rValue, _v0) { - stepState: - while (true) { - var list = _v0.a; - var result = _v0.b; - if (!list.b) { - return _Utils_Tuple2( - list, - A3(rightStep, rKey, rValue, result)); - } else { - var _v2 = list.a; - var lKey = _v2.a; - var lValue = _v2.b; - var rest = list.b; - if (_Utils_cmp(lKey, rKey) < 0) { - var $temp$rKey = rKey, - $temp$rValue = rValue, - $temp$_v0 = _Utils_Tuple2( - rest, - A3(leftStep, lKey, lValue, result)); - rKey = $temp$rKey; - rValue = $temp$rValue; - _v0 = $temp$_v0; - continue stepState; - } else { - if (_Utils_cmp(lKey, rKey) > 0) { - return _Utils_Tuple2( - list, - A3(rightStep, rKey, rValue, result)); - } else { - return _Utils_Tuple2( - rest, - A4(bothStep, lKey, lValue, rValue, result)); - } - } - } - } - }); - var _v3 = A3( - $elm$core$Dict$foldl, - stepState, - _Utils_Tuple2( - $elm$core$Dict$toList(leftDict), - initialResult), - rightDict); - var leftovers = _v3.a; - var intermediateResult = _v3.b; - return A3( - $elm$core$List$foldl, - F2( - function (_v4, result) { - var k = _v4.a; - var v = _v4.b; - return A3(leftStep, k, v, result); - }), - intermediateResult, - leftovers); - }); -var $elm$time$Time$setInterval = _Time_setInterval; -var $elm$time$Time$spawnHelp = F3( - function (router, intervals, processes) { - if (!intervals.b) { - return $elm$core$Task$succeed(processes); - } else { - var interval = intervals.a; - var rest = intervals.b; - var spawnTimer = $elm$core$Process$spawn( - A2( - $elm$time$Time$setInterval, - interval, - A2($elm$core$Platform$sendToSelf, router, interval))); - var spawnRest = function (id) { - return A3( - $elm$time$Time$spawnHelp, - router, - rest, - A3($elm$core$Dict$insert, interval, id, processes)); - }; - return A2($elm$core$Task$andThen, spawnRest, spawnTimer); - } - }); -var $elm$time$Time$onEffects = F3( - function (router, subs, _v0) { - var processes = _v0.processes; - var rightStep = F3( - function (_v6, id, _v7) { - var spawns = _v7.a; - var existing = _v7.b; - var kills = _v7.c; - return _Utils_Tuple3( - spawns, - existing, - A2( - $elm$core$Task$andThen, - function (_v5) { - return kills; - }, - $elm$core$Process$kill(id))); - }); - var newTaggers = A3($elm$core$List$foldl, $elm$time$Time$addMySub, $elm$core$Dict$empty, subs); - var leftStep = F3( - function (interval, taggers, _v4) { - var spawns = _v4.a; - var existing = _v4.b; - var kills = _v4.c; - return _Utils_Tuple3( - A2($elm$core$List$cons, interval, spawns), - existing, - kills); - }); - var bothStep = F4( - function (interval, taggers, id, _v3) { - var spawns = _v3.a; - var existing = _v3.b; - var kills = _v3.c; - return _Utils_Tuple3( - spawns, - A3($elm$core$Dict$insert, interval, id, existing), - kills); - }); - var _v1 = A6( - $elm$core$Dict$merge, - leftStep, - bothStep, - rightStep, - newTaggers, - processes, - _Utils_Tuple3( - _List_Nil, - $elm$core$Dict$empty, - $elm$core$Task$succeed(_Utils_Tuple0))); - var spawnList = _v1.a; - var existingDict = _v1.b; - var killTask = _v1.c; - return A2( - $elm$core$Task$andThen, - function (newProcesses) { - return $elm$core$Task$succeed( - A2($elm$time$Time$State, newTaggers, newProcesses)); - }, - A2( - $elm$core$Task$andThen, - function (_v2) { - return A3($elm$time$Time$spawnHelp, router, spawnList, existingDict); - }, - killTask)); - }); -var $elm$time$Time$onSelfMsg = F3( - function (router, interval, state) { - var _v0 = A2($elm$core$Dict$get, interval, state.taggers); - if (_v0.$ === 'Nothing') { - return $elm$core$Task$succeed(state); - } else { - var taggers = _v0.a; - var tellTaggers = function (time) { - return $elm$core$Task$sequence( - A2( - $elm$core$List$map, - function (tagger) { - return A2( - $elm$core$Platform$sendToApp, - router, - tagger(time)); - }, - taggers)); - }; - return A2( - $elm$core$Task$andThen, - function (_v1) { - return $elm$core$Task$succeed(state); - }, - A2($elm$core$Task$andThen, tellTaggers, $elm$time$Time$now)); - } - }); -var $elm$time$Time$subMap = F2( - function (f, _v0) { - var interval = _v0.a; - var tagger = _v0.b; - return A2( - $elm$time$Time$Every, - interval, - A2($elm$core$Basics$composeL, f, tagger)); - }); -_Platform_effectManagers['Time'] = _Platform_createManager($elm$time$Time$init, $elm$time$Time$onEffects, $elm$time$Time$onSelfMsg, 0, $elm$time$Time$subMap); -var $elm$time$Time$subscription = _Platform_leaf('Time'); -var $elm$time$Time$every = F2( - function (interval, tagger) { - return $elm$time$Time$subscription( - A2($elm$time$Time$Every, interval, tagger)); - }); -var $elm$core$Platform$Sub$map = _Platform_map; -var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); -var $author$project$Page$Calendar$subscriptions = function (model) { - return $elm$core$Platform$Sub$none; -}; -var $author$project$Page$Patients$subscriptions = function (model) { - return $elm$core$Platform$Sub$none; -}; -var $author$project$Main$subscriptions = function (model) { - return $elm$core$Platform$Sub$batch( - _List_fromArray( - [ - A2($elm$time$Time$every, (5 * 60) * 1000, $author$project$Main$CheckToken), - function () { - switch (model.$) { - case 'NotFound': - return $elm$core$Platform$Sub$none; - case 'Redirect': - return A2( - $author$project$Session$changes, - $author$project$Main$GotSession, - $author$project$Session$navKey( - $author$project$Main$toSession(model))); - case 'Calendar': - var calendar = model.a; - return A2( - $elm$core$Platform$Sub$map, - $author$project$Main$GotCalendarMsg, - $author$project$Page$Calendar$subscriptions(calendar)); - default: - var patients = model.a; - return A2( - $elm$core$Platform$Sub$map, - $author$project$Main$GotPatientsMsg, - $author$project$Page$Patients$subscriptions(patients)); - } - }() - ])); -}; -var $elm$core$Basics$round = _Basics_round; -var $JonRowe$elm_jwt$Jwt$decodeExp = $elm$json$Json$Decode$oneOf( - _List_fromArray( - [ - $elm$json$Json$Decode$int, - A2($elm$json$Json$Decode$map, $elm$core$Basics$round, $elm$json$Json$Decode$float) - ])); -var $JonRowe$elm_jwt$Jwt$TokenDecodeError = function (a) { - return {$: 'TokenDecodeError', a: a}; -}; -var $JonRowe$elm_jwt$Jwt$TokenProcessingError = function (a) { - return {$: 'TokenProcessingError', a: a}; -}; -var $truqu$elm_base64$Base64$Decode$pad = function (input) { - var _v0 = $elm$core$String$length(input) % 4; - switch (_v0) { - case 3: - return input + '='; - case 2: - return input + '=='; - default: - return input; - } -}; -var $truqu$elm_base64$Base64$Decode$charToInt = function (_char) { - switch (_char.valueOf()) { - case 'A': - return 0; - case 'B': - return 1; - case 'C': - return 2; - case 'D': - return 3; - case 'E': - return 4; - case 'F': - return 5; - case 'G': - return 6; - case 'H': - return 7; - case 'I': - return 8; - case 'J': - return 9; - case 'K': - return 10; - case 'L': - return 11; - case 'M': - return 12; - case 'N': - return 13; - case 'O': - return 14; - case 'P': - return 15; - case 'Q': - return 16; - case 'R': - return 17; - case 'S': - return 18; - case 'T': - return 19; - case 'U': - return 20; - case 'V': - return 21; - case 'W': - return 22; - case 'X': - return 23; - case 'Y': - return 24; - case 'Z': - return 25; - case 'a': - return 26; - case 'b': - return 27; - case 'c': - return 28; - case 'd': - return 29; - case 'e': - return 30; - case 'f': - return 31; - case 'g': - return 32; - case 'h': - return 33; - case 'i': - return 34; - case 'j': - return 35; - case 'k': - return 36; - case 'l': - return 37; - case 'm': - return 38; - case 'n': - return 39; - case 'o': - return 40; - case 'p': - return 41; - case 'q': - return 42; - case 'r': - return 43; - case 's': - return 44; - case 't': - return 45; - case 'u': - return 46; - case 'v': - return 47; - case 'w': - return 48; - case 'x': - return 49; - case 'y': - return 50; - case 'z': - return 51; - case '0': - return 52; - case '1': - return 53; - case '2': - return 54; - case '3': - return 55; - case '4': - return 56; - case '5': - return 57; - case '6': - return 58; - case '7': - return 59; - case '8': - return 60; - case '9': - return 61; - case '+': - return 62; - case '/': - return 63; - default: - return 0; - } -}; -var $elm$core$String$cons = _String_cons; -var $elm$core$String$fromChar = function (_char) { - return A2($elm$core$String$cons, _char, ''); -}; -var $elm$core$Char$fromCode = _Char_fromCode; -var $truqu$elm_base64$Base64$Decode$intToString = A2($elm$core$Basics$composeR, $elm$core$Char$fromCode, $elm$core$String$fromChar); -var $truqu$elm_base64$Base64$Decode$add = F2( - function (_char, _v0) { - var curr = _v0.a; - var need = _v0.b; - var res = _v0.c; - var shiftAndAdd = function (_int) { - return (63 & _int) | (curr << 6); - }; - return (!need) ? ((!(128 & _char)) ? _Utils_Tuple3( - 0, - 0, - _Utils_ap( - res, - $truqu$elm_base64$Base64$Decode$intToString(_char))) : (((224 & _char) === 192) ? _Utils_Tuple3(31 & _char, 1, res) : (((240 & _char) === 224) ? _Utils_Tuple3(15 & _char, 2, res) : _Utils_Tuple3(7 & _char, 3, res)))) : ((need === 1) ? _Utils_Tuple3( - 0, - 0, - _Utils_ap( - res, - $truqu$elm_base64$Base64$Decode$intToString( - shiftAndAdd(_char)))) : _Utils_Tuple3( - shiftAndAdd(_char), - need - 1, - res)); - }); -var $truqu$elm_base64$Base64$Decode$toUTF16 = F2( - function (_char, acc) { - return _Utils_Tuple3( - 0, - 0, + } + return info; + }), + A5($kkpoon$elm_auth0_urlparser$Auth0$UrlParser$Auth0CallbackInfo, '', $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing, $elm$core$Maybe$Nothing), A2( - $truqu$elm_base64$Base64$Decode$add, - 255 & (_char >>> 0), - A2( - $truqu$elm_base64$Base64$Decode$add, - 255 & (_char >>> 8), - A2($truqu$elm_base64$Base64$Decode$add, 255 & (_char >>> 16), acc)))); - }); -var $truqu$elm_base64$Base64$Decode$chomp = F2( - function (char_, _v0) { - var curr = _v0.a; - var cnt = _v0.b; - var utf8ToUtf16 = _v0.c; - var _char = $truqu$elm_base64$Base64$Decode$charToInt(char_); - if (cnt === 3) { - return A2($truqu$elm_base64$Base64$Decode$toUTF16, curr | _char, utf8ToUtf16); - } else { - return _Utils_Tuple3((_char << ((3 - cnt) * 6)) | curr, cnt + 1, utf8ToUtf16); - } + $elm$core$List$map, + $elm$core$String$split('='), + A2($elm$core$String$split, '&', fragment)))) : $elm$core$Maybe$Nothing; +}; +var $elm$url$Url$Parser$Parser = function (a) { + return {$: 'Parser', a: a}; +}; +var $elm$url$Url$Parser$fragment = function (toFrag) { + return $elm$url$Url$Parser$Parser( + function (_v0) { + var visited = _v0.visited; + var unvisited = _v0.unvisited; + var params = _v0.params; + var frag = _v0.frag; + var value = _v0.value; + return _List_fromArray( + [ + A5( + $elm$url$Url$Parser$State, + visited, + unvisited, + params, + frag, + value( + toFrag(frag))) + ]); + }); +}; +var $elm$url$Url$Parser$mapState = F2( + function (func, _v0) { + var visited = _v0.visited; + var unvisited = _v0.unvisited; + var params = _v0.params; + var frag = _v0.frag; + var value = _v0.value; + return A5( + $elm$url$Url$Parser$State, + visited, + unvisited, + params, + frag, + func(value)); }); -var $truqu$elm_base64$Base64$Decode$initial = _Utils_Tuple3( - 0, - 0, - _Utils_Tuple3(0, 0, '')); -var $elm$core$Result$map = F2( - function (func, ra) { - if (ra.$ === 'Ok') { - var a = ra.a; - return $elm$core$Result$Ok( - func(a)); - } else { - var e = ra.a; - return $elm$core$Result$Err(e); - } +var $elm$url$Url$Parser$map = F2( + function (subValue, _v0) { + var parseArg = _v0.a; + return $elm$url$Url$Parser$Parser( + function (_v1) { + var visited = _v1.visited; + var unvisited = _v1.unvisited; + var params = _v1.params; + var frag = _v1.frag; + var value = _v1.value; + return A2( + $elm$core$List$map, + $elm$url$Url$Parser$mapState(value), + parseArg( + A5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue))); + }); }); -var $elm$core$String$endsWith = _String_endsWith; -var $truqu$elm_base64$Base64$Decode$stripNulls = F2( - function (input, output) { - return A2($elm$core$String$endsWith, '==', input) ? A2($elm$core$String$dropRight, 2, output) : (A2($elm$core$String$endsWith, '=', input) ? A2($elm$core$String$dropRight, 1, output) : output); +var $elm$core$List$concat = function (lists) { + return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); +}; +var $elm$core$List$concatMap = F2( + function (f, list) { + return $elm$core$List$concat( + A2($elm$core$List$map, f, list)); }); -var $elm$regex$Regex$contains = _Regex_contains; -var $truqu$elm_base64$Base64$Decode$validBase64Regex = A2( - $elm$core$Maybe$withDefault, - $elm$regex$Regex$never, - $elm$regex$Regex$fromString('^([A-Za-z0-9\\/+]{4})*([A-Za-z0-9\\/+]{2}[A-Za-z0-9\\/+=]{2})?$')); -var $truqu$elm_base64$Base64$Decode$validate = function (input) { - return A2($elm$regex$Regex$contains, $truqu$elm_base64$Base64$Decode$validBase64Regex, input) ? $elm$core$Result$Ok(input) : $elm$core$Result$Err('Invalid base64'); +var $elm$url$Url$Parser$oneOf = function (parsers) { + return $elm$url$Url$Parser$Parser( + function (state) { + return A2( + $elm$core$List$concatMap, + function (_v0) { + var parser = _v0.a; + return parser(state); + }, + parsers); + }); }; -var $truqu$elm_base64$Base64$Decode$wrapUp = function (_v0) { - var _v1 = _v0.c; - var need = _v1.b; - var res = _v1.c; - return (need > 0) ? $elm$core$Result$Err('Invalid UTF-16') : $elm$core$Result$Ok(res); +var $elm$url$Url$Parser$s = function (str) { + return $elm$url$Url$Parser$Parser( + function (_v0) { + var visited = _v0.visited; + var unvisited = _v0.unvisited; + var params = _v0.params; + var frag = _v0.frag; + var value = _v0.value; + if (!unvisited.b) { + return _List_Nil; + } else { + var next = unvisited.a; + var rest = unvisited.b; + return _Utils_eq(next, str) ? _List_fromArray( + [ + A5( + $elm$url$Url$Parser$State, + A2($elm$core$List$cons, next, visited), + rest, + params, + frag, + value) + ]) : _List_Nil; + } + }); }; -var $truqu$elm_base64$Base64$Decode$validateAndDecode = function (input) { - return A2( - $elm$core$Result$map, - $truqu$elm_base64$Base64$Decode$stripNulls(input), - A2( - $elm$core$Result$andThen, +var $author$project$Route$parser = $elm$url$Url$Parser$oneOf( + _List_fromArray( + [ A2( - $elm$core$Basics$composeR, - A2($elm$core$String$foldl, $truqu$elm_base64$Base64$Decode$chomp, $truqu$elm_base64$Base64$Decode$initial), - $truqu$elm_base64$Base64$Decode$wrapUp), - $truqu$elm_base64$Base64$Decode$validate(input))); + $elm$url$Url$Parser$map, + $author$project$Route$Root, + $elm$url$Url$Parser$fragment($author$project$Route$accessTokenUrlParser)), + A2( + $elm$url$Url$Parser$map, + $author$project$Route$Calendar, + $elm$url$Url$Parser$s('calendar')), + A2( + $elm$url$Url$Parser$map, + $author$project$Route$Patients, + $elm$url$Url$Parser$s('patients')), + A2( + $elm$url$Url$Parser$map, + $author$project$Route$Logout, + $elm$url$Url$Parser$s('logout')) + ])); +var $author$project$Route$fromUrl = function (url) { + return A2( + $elm$url$Url$Parser$parse, + $author$project$Route$parser, + A2($elm$core$Debug$log, 'url', url)); }; -var $truqu$elm_base64$Base64$Decode$decode = A2($elm$core$Basics$composeR, $truqu$elm_base64$Base64$Decode$pad, $truqu$elm_base64$Base64$Decode$validateAndDecode); -var $truqu$elm_base64$Base64$decode = $truqu$elm_base64$Base64$Decode$decode; -var $elm$core$Basics$modBy = _Basics_modBy; -var $JonRowe$elm_jwt$Jwt$fixlength = function (s) { - var _v0 = A2( - $elm$core$Basics$modBy, - 4, - $elm$core$String$length(s)); - switch (_v0) { - case 0: - return $elm$core$Result$Ok(s); - case 2: - return $elm$core$Result$Ok( - $elm$core$String$concat( - _List_fromArray( - [s, '==']))); - case 3: - return $elm$core$Result$Ok( - $elm$core$String$concat( - _List_fromArray( - [s, '=']))); - default: - return $elm$core$Result$Err( - $JonRowe$elm_jwt$Jwt$TokenProcessingError('Wrong length')); - } +var $author$project$Main$init = F3( + function (maybeCred, url, navKey) { + var session = A2($author$project$Session$fromCred, navKey, maybeCred); + return A2( + $author$project$Main$changeRouteTo, + $author$project$Route$fromUrl(url), + $author$project$Main$Redirect(session)); + }); +var $author$project$Main$GotSession = function (a) { + return {$: 'GotSession', a: a}; }; -var $elm$core$String$map = _String_map; -var $JonRowe$elm_jwt$Jwt$unurl = function () { - var fix = function (c) { - switch (c.valueOf()) { - case '-': - return _Utils_chr('+'); - case '_': - return _Utils_chr('/'); - default: - return c; +var $elm$core$Platform$Sub$batch = _Platform_batch; +var $author$project$Api$decodeFromChange = function (val) { + return $elm$core$Result$toMaybe( + A2($elm$json$Json$Decode$decodeValue, $author$project$Api$credDecoder, val)); +}; +var $author$project$Api$onStoreChange = _Platform_incomingPort('onStoreChange', $elm$json$Json$Decode$value); +var $author$project$Api$credChanges = function (toMsg) { + return $author$project$Api$onStoreChange( + function (value) { + return toMsg( + $author$project$Api$decodeFromChange(value)); + }); +}; +var $author$project$Session$changes = F2( + function (toMsg, key) { + return $author$project$Api$credChanges( + function (maybeCred) { + return toMsg( + A2($author$project$Session$fromCred, key, maybeCred)); + }); + }); +var $elm$time$Time$Every = F2( + function (a, b) { + return {$: 'Every', a: a, b: b}; + }); +var $elm$time$Time$State = F2( + function (taggers, processes) { + return {processes: processes, taggers: taggers}; + }); +var $elm$time$Time$init = $elm$core$Task$succeed( + A2($elm$time$Time$State, $elm$core$Dict$empty, $elm$core$Dict$empty)); +var $elm$time$Time$addMySub = F2( + function (_v0, state) { + var interval = _v0.a; + var tagger = _v0.b; + var _v1 = A2($elm$core$Dict$get, interval, state); + if (_v1.$ === 'Nothing') { + return A3( + $elm$core$Dict$insert, + interval, + _List_fromArray( + [tagger]), + state); + } else { + var taggers = _v1.a; + return A3( + $elm$core$Dict$insert, + interval, + A2($elm$core$List$cons, tagger, taggers), + state); } - }; - return $elm$core$String$map(fix); -}(); -var $JonRowe$elm_jwt$Jwt$getTokenBody = function (token) { - var processor = A2( - $elm$core$Basics$composeR, - $JonRowe$elm_jwt$Jwt$unurl, - A2( - $elm$core$Basics$composeR, - $elm$core$String$split('.'), - $elm$core$List$map($JonRowe$elm_jwt$Jwt$fixlength))); - var _v0 = processor(token); - _v0$2: - while (true) { - if (_v0.b && _v0.b.b) { - if (_v0.b.a.$ === 'Err') { - if (_v0.b.b.b && (!_v0.b.b.b.b)) { - var _v1 = _v0.b; - var e = _v1.a.a; - var _v2 = _v1.b; - return $elm$core$Result$Err(e); - } else { - break _v0$2; - } + }); +var $elm$core$Dict$foldl = F3( + function (func, acc, dict) { + foldl: + while (true) { + if (dict.$ === 'RBEmpty_elm_builtin') { + return acc; } else { - if (_v0.b.b.b && (!_v0.b.b.b.b)) { - var _v3 = _v0.b; - var encBody = _v3.a.a; - var _v4 = _v3.b; - return $elm$core$Result$Ok(encBody); - } else { - break _v0$2; - } + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + var $temp$func = func, + $temp$acc = A3( + func, + key, + value, + A3($elm$core$Dict$foldl, func, acc, left)), + $temp$dict = right; + func = $temp$func; + acc = $temp$acc; + dict = $temp$dict; + continue foldl; } + } + }); +var $elm$core$Dict$merge = F6( + function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) { + var stepState = F3( + function (rKey, rValue, _v0) { + stepState: + while (true) { + var list = _v0.a; + var result = _v0.b; + if (!list.b) { + return _Utils_Tuple2( + list, + A3(rightStep, rKey, rValue, result)); + } else { + var _v2 = list.a; + var lKey = _v2.a; + var lValue = _v2.b; + var rest = list.b; + if (_Utils_cmp(lKey, rKey) < 0) { + var $temp$rKey = rKey, + $temp$rValue = rValue, + $temp$_v0 = _Utils_Tuple2( + rest, + A3(leftStep, lKey, lValue, result)); + rKey = $temp$rKey; + rValue = $temp$rValue; + _v0 = $temp$_v0; + continue stepState; + } else { + if (_Utils_cmp(lKey, rKey) > 0) { + return _Utils_Tuple2( + list, + A3(rightStep, rKey, rValue, result)); + } else { + return _Utils_Tuple2( + rest, + A4(bothStep, lKey, lValue, rValue, result)); + } + } + } + } + }); + var _v3 = A3( + $elm$core$Dict$foldl, + stepState, + _Utils_Tuple2( + $elm$core$Dict$toList(leftDict), + initialResult), + rightDict); + var leftovers = _v3.a; + var intermediateResult = _v3.b; + return A3( + $elm$core$List$foldl, + F2( + function (_v4, result) { + var k = _v4.a; + var v = _v4.b; + return A3(leftStep, k, v, result); + }), + intermediateResult, + leftovers); + }); +var $elm$time$Time$setInterval = _Time_setInterval; +var $elm$time$Time$spawnHelp = F3( + function (router, intervals, processes) { + if (!intervals.b) { + return $elm$core$Task$succeed(processes); } else { - break _v0$2; + var interval = intervals.a; + var rest = intervals.b; + var spawnTimer = $elm$core$Process$spawn( + A2( + $elm$time$Time$setInterval, + interval, + A2($elm$core$Platform$sendToSelf, router, interval))); + var spawnRest = function (id) { + return A3( + $elm$time$Time$spawnHelp, + router, + rest, + A3($elm$core$Dict$insert, interval, id, processes)); + }; + return A2($elm$core$Task$andThen, spawnRest, spawnTimer); } - } - return $elm$core$Result$Err( - $JonRowe$elm_jwt$Jwt$TokenProcessingError('Token has invalid shape')); -}; -var $elm$core$Result$mapError = F2( - function (f, result) { - if (result.$ === 'Ok') { - var v = result.a; - return $elm$core$Result$Ok(v); + }); +var $elm$time$Time$onEffects = F3( + function (router, subs, _v0) { + var processes = _v0.processes; + var rightStep = F3( + function (_v6, id, _v7) { + var spawns = _v7.a; + var existing = _v7.b; + var kills = _v7.c; + return _Utils_Tuple3( + spawns, + existing, + A2( + $elm$core$Task$andThen, + function (_v5) { + return kills; + }, + $elm$core$Process$kill(id))); + }); + var newTaggers = A3($elm$core$List$foldl, $elm$time$Time$addMySub, $elm$core$Dict$empty, subs); + var leftStep = F3( + function (interval, taggers, _v4) { + var spawns = _v4.a; + var existing = _v4.b; + var kills = _v4.c; + return _Utils_Tuple3( + A2($elm$core$List$cons, interval, spawns), + existing, + kills); + }); + var bothStep = F4( + function (interval, taggers, id, _v3) { + var spawns = _v3.a; + var existing = _v3.b; + var kills = _v3.c; + return _Utils_Tuple3( + spawns, + A3($elm$core$Dict$insert, interval, id, existing), + kills); + }); + var _v1 = A6( + $elm$core$Dict$merge, + leftStep, + bothStep, + rightStep, + newTaggers, + processes, + _Utils_Tuple3( + _List_Nil, + $elm$core$Dict$empty, + $elm$core$Task$succeed(_Utils_Tuple0))); + var spawnList = _v1.a; + var existingDict = _v1.b; + var killTask = _v1.c; + return A2( + $elm$core$Task$andThen, + function (newProcesses) { + return $elm$core$Task$succeed( + A2($elm$time$Time$State, newTaggers, newProcesses)); + }, + A2( + $elm$core$Task$andThen, + function (_v2) { + return A3($elm$time$Time$spawnHelp, router, spawnList, existingDict); + }, + killTask)); + }); +var $elm$time$Time$onSelfMsg = F3( + function (router, interval, state) { + var _v0 = A2($elm$core$Dict$get, interval, state.taggers); + if (_v0.$ === 'Nothing') { + return $elm$core$Task$succeed(state); } else { - var e = result.a; - return $elm$core$Result$Err( - f(e)); + var taggers = _v0.a; + var tellTaggers = function (time) { + return $elm$core$Task$sequence( + A2( + $elm$core$List$map, + function (tagger) { + return A2( + $elm$core$Platform$sendToApp, + router, + tagger(time)); + }, + taggers)); + }; + return A2( + $elm$core$Task$andThen, + function (_v1) { + return $elm$core$Task$succeed(state); + }, + A2($elm$core$Task$andThen, tellTaggers, $elm$time$Time$now)); } }); -var $JonRowe$elm_jwt$Jwt$decodeToken = function (dec) { - return A2( - $elm$core$Basics$composeR, - $JonRowe$elm_jwt$Jwt$getTokenBody, - A2( - $elm$core$Basics$composeR, - $elm$core$Result$andThen( - A2( - $elm$core$Basics$composeR, - $truqu$elm_base64$Base64$decode, - $elm$core$Result$mapError($JonRowe$elm_jwt$Jwt$TokenProcessingError))), - $elm$core$Result$andThen( - A2( - $elm$core$Basics$composeR, - $elm$json$Json$Decode$decodeString(dec), - $elm$core$Result$mapError($JonRowe$elm_jwt$Jwt$TokenDecodeError))))); +var $elm$time$Time$subMap = F2( + function (f, _v0) { + var interval = _v0.a; + var tagger = _v0.b; + return A2( + $elm$time$Time$Every, + interval, + A2($elm$core$Basics$composeL, f, tagger)); + }); +_Platform_effectManagers['Time'] = _Platform_createManager($elm$time$Time$init, $elm$time$Time$onEffects, $elm$time$Time$onSelfMsg, 0, $elm$time$Time$subMap); +var $elm$time$Time$subscription = _Platform_leaf('Time'); +var $elm$time$Time$every = F2( + function (interval, tagger) { + return $elm$time$Time$subscription( + A2($elm$time$Time$Every, interval, tagger)); + }); +var $elm$core$Platform$Sub$map = _Platform_map; +var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil); +var $author$project$Page$Calendar$subscriptions = function (model) { + return $elm$core$Platform$Sub$none; +}; +var $author$project$Page$Patients$subscriptions = function (model) { + return $elm$core$Platform$Sub$none; +}; +var $author$project$Main$subscriptions = function (model) { + return $elm$core$Platform$Sub$batch( + _List_fromArray( + [ + A2($elm$time$Time$every, (5 * 60) * 1000, $author$project$Main$CheckToken), + function () { + switch (model.$) { + case 'NotFound': + return $elm$core$Platform$Sub$none; + case 'Redirect': + return A2( + $author$project$Session$changes, + $author$project$Main$GotSession, + $author$project$Session$navKey( + $author$project$Main$toSession(model))); + case 'Calendar': + var calendar = model.a; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotCalendarMsg, + $author$project$Page$Calendar$subscriptions(calendar)); + default: + var patients = model.a; + return A2( + $elm$core$Platform$Sub$map, + $author$project$Main$GotPatientsMsg, + $author$project$Page$Patients$subscriptions(patients)); + } + }() + ])); }; +var $elm$core$Basics$round = _Basics_round; +var $JonRowe$elm_jwt$Jwt$decodeExp = $elm$json$Json$Decode$oneOf( + _List_fromArray( + [ + $elm$json$Json$Decode$int, + A2($elm$json$Json$Decode$map, $elm$core$Basics$round, $elm$json$Json$Decode$float) + ])); var $elm$time$Time$posixToMillis = function (_v0) { var millis = _v0.a; return millis; @@ -9883,15 +9936,6 @@ var $author$project$Session$isExpired = F2( var credval = $author$project$Session$cred(session); return A2($author$project$Api$isExpired, time, credval); }); -var $elm$core$Result$withDefault = F2( - function (def, result) { - if (result.$ === 'Ok') { - var a = result.a; - return a; - } else { - return def; - } - }); var $author$project$Main$checkToken = F2( function (time, model) { return A2( @@ -17201,35 +17245,6 @@ var $mdgriffith$elm_ui$Element$focused = function (decs) { $mdgriffith$elm_ui$Internal$Model$Focus, $mdgriffith$elm_ui$Internal$Model$unwrapDecorations(decs))); }; -var $author$project$Api$None = {$: 'None'}; -var $author$project$Api$Psy = {$: 'Psy'}; -var $author$project$Api$User = {$: 'User'}; -var $elm$json$Json$Decode$at = F2( - function (fields, decoder) { - return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields); - }); -var $elm$json$Json$Decode$index = _Json_decodeIndex; -var $author$project$Api$getRole = A2( - $elm$json$Json$Decode$map, - function (string) { - return (string === 'Psy') ? $author$project$Api$Psy : ((string === 'user') ? $author$project$Api$User : $author$project$Api$None); - }, - A2( - $elm$json$Json$Decode$at, - _List_fromArray( - ['https://hasura.io/jwt/claims', 'x-hasura-allowed-roles']), - A2($elm$json$Json$Decode$index, 0, $elm$json$Json$Decode$string))); -var $author$project$Api$getRoleFromMaybeCred = function (maybecred) { - if (maybecred.$ === 'Just') { - var token = maybecred.a.a; - return A2( - $elm$core$Result$withDefault, - $author$project$Api$None, - A2($JonRowe$elm_jwt$Jwt$decodeToken, $author$project$Api$getRole, token)); - } else { - return $author$project$Api$None; - } -}; var $elm$html$Html$Attributes$href = function (url) { return A2( $elm$html$Html$Attributes$stringProperty, @@ -17331,130 +17346,91 @@ var $author$project$Page$viewHeader = function (maybeCred) { ]), _Utils_ap( function () { - var _v0 = $author$project$Api$getRoleFromMaybeCred(maybeCred); - switch (_v0.$) { - case 'Psy': - return _List_fromArray( - [ - A2( - $mdgriffith$elm_ui$Element$link, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) - ]), - { - label: A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), - $mdgriffith$elm_ui$Element$padding(30), - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), - $mdgriffith$elm_ui$Element$mouseOver( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) - ])), - $mdgriffith$elm_ui$Element$focused( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) - ])) - ]), - A2( - $mdgriffith$elm_ui$Element$el, + var _v0 = A2( + $elm$core$Debug$log, + 'Role', + $author$project$Api$getRoleFromMaybeCred(maybeCred)); + if (_v0.$ === 'Psy') { + return _List_fromArray( + [ + A2( + $mdgriffith$elm_ui$Element$link, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) + ]), + { + label: A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), + $mdgriffith$elm_ui$Element$padding(30), + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), + $mdgriffith$elm_ui$Element$mouseOver( _List_fromArray( - [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), - $mdgriffith$elm_ui$Element$text('Patients'))), - url: 'patients' - }), - A2( - $mdgriffith$elm_ui$Element$link, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) - ]), - { - label: A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), - $mdgriffith$elm_ui$Element$padding(30), - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), - $mdgriffith$elm_ui$Element$mouseOver( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) - ])), - $mdgriffith$elm_ui$Element$focused( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) - ])) - ]), - A2( - $mdgriffith$elm_ui$Element$el, + [ + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) + ])), + $mdgriffith$elm_ui$Element$focused( _List_fromArray( - [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), - $mdgriffith$elm_ui$Element$text('Calendrier'))), - url: 'calendar' - }) - ]); - case 'User': - return _List_fromArray( - [ - A2( - $mdgriffith$elm_ui$Element$link, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) - ]), - { - label: A2( + [ + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) + ])) + ]), + A2( $mdgriffith$elm_ui$Element$el, _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), - $mdgriffith$elm_ui$Element$padding(30), - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), - $mdgriffith$elm_ui$Element$mouseOver( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) - ])), - $mdgriffith$elm_ui$Element$focused( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) - ])) - ]), - A2( - $mdgriffith$elm_ui$Element$el, + [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), + $mdgriffith$elm_ui$Element$text('Patients'))), + url: 'patients' + }), + A2( + $mdgriffith$elm_ui$Element$link, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) + ]), + { + label: A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill), + $mdgriffith$elm_ui$Element$padding(30), + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), + $mdgriffith$elm_ui$Element$mouseOver( _List_fromArray( - [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), - $mdgriffith$elm_ui$Element$text('Calendrier'))), - url: 'calendar' - }) - ]); - default: - return _List_fromArray( - [$mdgriffith$elm_ui$Element$none]); + [ + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) + ])), + $mdgriffith$elm_ui$Element$focused( + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) + ])) + ]), + A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), + $mdgriffith$elm_ui$Element$text('Calendrier'))), + url: 'calendar' + }) + ]); + } else { + return _List_fromArray( + [$mdgriffith$elm_ui$Element$none]); } }(), _List_fromArray( @@ -17976,89 +17952,104 @@ var $author$project$Page$Calendar$tableField = function (data) { ]), $mdgriffith$elm_ui$Element$text(data)); }; -var $author$project$Page$Calendar$agendaTable = function (response) { - var timeToString = function (_v1) { - var string = _v1.a; - return string; - }; - var dateToString = function (_v0) { - var string = _v0.a; - return string; - }; - return A2( - $mdgriffith$elm_ui$Element$table, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$centerX, - $mdgriffith$elm_ui$Element$centerY, - $mdgriffith$elm_ui$Element$padding(30), - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)) - ]), - { - columns: _List_fromArray( +var $author$project$Page$Calendar$agendaTable = F2( + function (response, maybeCred) { + var timeToString = function (_v2) { + var string = _v2.a; + return string; + }; + var dateToString = function (_v1) { + var string = _v1.a; + return string; + }; + return A2( + $mdgriffith$elm_ui$Element$table, + _List_fromArray( [ - { - header: $author$project$Page$Calendar$tableField('Date'), - view: function (agenda) { - return $author$project$Page$Calendar$tableField( - dateToString(agenda.date)); - }, - width: $mdgriffith$elm_ui$Element$fill - }, - { - header: $author$project$Page$Calendar$tableField('Heure'), - view: function (agenda) { - return $author$project$Page$Calendar$tableField( - timeToString(agenda.heure)); - }, - width: $mdgriffith$elm_ui$Element$fill - }, - { - header: $author$project$Page$Calendar$tableField('Supprimer agenda'), - view: function (agenda) { - return A2( - $mdgriffith$elm_ui$Element$Input$button, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Border$width(1), - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) - ]), + $mdgriffith$elm_ui$Element$centerX, + $mdgriffith$elm_ui$Element$centerY, + $mdgriffith$elm_ui$Element$padding(30), + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)) + ]), + { + columns: _Utils_ap( + _List_fromArray( + [ { - label: A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$centerX, - $mdgriffith$elm_ui$Element$centerY, - $mdgriffith$elm_ui$Element$padding(23), - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 255, 50, 50)), - $mdgriffith$elm_ui$Element$mouseOver( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 200, 30, 30)) - ])), - $mdgriffith$elm_ui$Element$focused( + header: $author$project$Page$Calendar$tableField('Date'), + view: function (agenda) { + return $author$project$Page$Calendar$tableField( + dateToString(agenda.date)); + }, + width: $mdgriffith$elm_ui$Element$fill + }, + { + header: $author$project$Page$Calendar$tableField('Heure'), + view: function (agenda) { + return $author$project$Page$Calendar$tableField( + timeToString(agenda.heure)); + }, + width: $mdgriffith$elm_ui$Element$fill + } + ]), + function () { + var _v0 = A2( + $elm$core$Debug$log, + 'Role', + $author$project$Api$getRoleFromMaybeCred(maybeCred)); + if (_v0.$ === 'Psy') { + return _List_fromArray( + [ + { + header: $author$project$Page$Calendar$tableField('Supprimer agenda'), + view: function (agenda) { + return A2( + $mdgriffith$elm_ui$Element$Input$button, _List_fromArray( [ - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 100, 10, 10)) - ])) - ]), - $mdgriffith$elm_ui$Element$text('X')), - onPress: $elm$core$Maybe$Just( - $author$project$Page$Calendar$DeleteAgenda(agenda)) - }); - }, - width: $mdgriffith$elm_ui$Element$fill - } - ]), - data: response - }); -}; + $mdgriffith$elm_ui$Element$Border$width(1), + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) + ]), + { + label: A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$centerX, + $mdgriffith$elm_ui$Element$centerY, + $mdgriffith$elm_ui$Element$padding(23), + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 255, 50, 50)), + $mdgriffith$elm_ui$Element$mouseOver( + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 200, 30, 30)) + ])), + $mdgriffith$elm_ui$Element$focused( + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 100, 10, 10)) + ])) + ]), + $mdgriffith$elm_ui$Element$text('X')), + onPress: $elm$core$Maybe$Just( + $author$project$Page$Calendar$DeleteAgenda(agenda)) + }); + }, + width: $mdgriffith$elm_ui$Element$fill + } + ]); + } else { + return _List_Nil; + } + }()), + data: response + }); + }); var $elm$html$Html$Attributes$alt = $elm$html$Html$Attributes$stringProperty('alt'); var $elm$html$Html$Attributes$src = function (url) { return A2( @@ -19047,8 +19038,8 @@ var $author$project$Page$Calendar$textInput = F4( text: formtext }); }); -var $author$project$Page$Calendar$successView = F3( - function (response, form, addAgendaData) { +var $author$project$Page$Calendar$successView = F4( + function (response, form, addAgendaData, maybeCred) { var error = function () { if (addAgendaData.$ === 'Failure') { var graphqlError = addAgendaData.a; @@ -19069,98 +19060,113 @@ var $author$project$Page$Calendar$successView = F3( $mdgriffith$elm_ui$Element$height($mdgriffith$elm_ui$Element$fill), $mdgriffith$elm_ui$Element$width($mdgriffith$elm_ui$Element$fill) ]), - _List_fromArray( - [ - A2( - $mdgriffith$elm_ui$Element$row, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$centerX, - $mdgriffith$elm_ui$Element$padding(50) - ]), - _List_fromArray( - [ - A2( - $mdgriffith$elm_ui$Element$image, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width( - A2($mdgriffith$elm_ui$Element$maximum, 80, $mdgriffith$elm_ui$Element$fill)) - ]), - {description: 'logo', src: 'logo.png'}), - A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), - $mdgriffith$elm_ui$Element$Font$size(80) - ]), - $mdgriffith$elm_ui$Element$text('Votre liste de rendez-vous')), - A2( - $mdgriffith$elm_ui$Element$image, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$width( - A2($mdgriffith$elm_ui$Element$maximum, 80, $mdgriffith$elm_ui$Element$fill)) - ]), - {description: 'logo', src: 'logo.png'}) - ])), - $author$project$Page$Calendar$agendaTable(response), - A2( - $mdgriffith$elm_ui$Element$row, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$centerX, - $mdgriffith$elm_ui$Element$padding(30) - ]), - _List_fromArray( - [ - A4($author$project$Page$Calendar$textInput, $author$project$Page$Calendar$EnteredDate, form.date, 'AAAA-MM-JJ', 'Date'), - A4($author$project$Page$Calendar$textInput, $author$project$Page$Calendar$EnteredHeure, form.heure, 'HH:MM:SS+TZ', 'Heure') - ])), - A2( - $mdgriffith$elm_ui$Element$Input$button, - _List_fromArray( - [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), - { - label: A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$padding(30), - $mdgriffith$elm_ui$Element$Border$rounded(5), - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), - $mdgriffith$elm_ui$Element$mouseOver( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) - ])), - $mdgriffith$elm_ui$Element$focused( - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$Background$color( - A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) - ])) - ]), - $mdgriffith$elm_ui$Element$text('Ajouter un nouvel agenda')), - onPress: $elm$core$Maybe$Just($author$project$Page$Calendar$AddAgenda) - }), - A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [ - $mdgriffith$elm_ui$Element$centerX, - $mdgriffith$elm_ui$Element$centerY, - $mdgriffith$elm_ui$Element$Font$color( - A3($mdgriffith$elm_ui$Element$rgb255, 200, 30, 30)) - ]), - error) - ])); + _Utils_ap( + _List_fromArray( + [ + A2( + $mdgriffith$elm_ui$Element$row, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$centerX, + $mdgriffith$elm_ui$Element$padding(50) + ]), + _List_fromArray( + [ + A2( + $mdgriffith$elm_ui$Element$image, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width( + A2($mdgriffith$elm_ui$Element$maximum, 80, $mdgriffith$elm_ui$Element$fill)) + ]), + {description: 'logo', src: 'logo.png'}), + A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), + $mdgriffith$elm_ui$Element$Font$size(80) + ]), + $mdgriffith$elm_ui$Element$text('Votre liste de rendez-vous')), + A2( + $mdgriffith$elm_ui$Element$image, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$width( + A2($mdgriffith$elm_ui$Element$maximum, 80, $mdgriffith$elm_ui$Element$fill)) + ]), + {description: 'logo', src: 'logo.png'}) + ])), + A2($author$project$Page$Calendar$agendaTable, response, maybeCred) + ]), + function () { + var _v0 = A2( + $elm$core$Debug$log, + 'Role', + $author$project$Api$getRoleFromMaybeCred(maybeCred)); + if (_v0.$ === 'Psy') { + return _List_fromArray( + [ + A2( + $mdgriffith$elm_ui$Element$row, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$centerX, + $mdgriffith$elm_ui$Element$padding(30) + ]), + _List_fromArray( + [ + A4($author$project$Page$Calendar$textInput, $author$project$Page$Calendar$EnteredDate, form.date, 'AAAA-MM-JJ', 'Date'), + A4($author$project$Page$Calendar$textInput, $author$project$Page$Calendar$EnteredHeure, form.heure, 'HH:MM:SS+TZ', 'Heure') + ])), + A2( + $mdgriffith$elm_ui$Element$Input$button, + _List_fromArray( + [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), + { + label: A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$padding(30), + $mdgriffith$elm_ui$Element$Border$rounded(5), + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 111, 144, 166)), + $mdgriffith$elm_ui$Element$mouseOver( + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 140, 179, 196)) + ])), + $mdgriffith$elm_ui$Element$focused( + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$Background$color( + A3($mdgriffith$elm_ui$Element$rgb255, 24, 52, 61)), + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 214, 217, 216)) + ])) + ]), + $mdgriffith$elm_ui$Element$text('Ajouter un nouvel agenda')), + onPress: $elm$core$Maybe$Just($author$project$Page$Calendar$AddAgenda) + }), + A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [ + $mdgriffith$elm_ui$Element$centerX, + $mdgriffith$elm_ui$Element$centerY, + $mdgriffith$elm_ui$Element$Font$color( + A3($mdgriffith$elm_ui$Element$rgb255, 200, 30, 30)) + ]), + error) + ]); + } else { + return _List_fromArray( + [$mdgriffith$elm_ui$Element$none]); + } + }())); }); var $author$project$Page$Calendar$view = function (model) { return { @@ -19187,7 +19193,13 @@ var $author$project$Page$Calendar$view = function (model) { $mdgriffith$elm_ui$Element$text('Nous importons vos données, merci de patienter.')); case 'Success': var response = _v0.a; - return A3($author$project$Page$Calendar$successView, response, data.form, data.addAgendaData); + return A4( + $author$project$Page$Calendar$successView, + response, + data.form, + data.addAgendaData, + $author$project$Session$cred( + $author$project$Page$Calendar$toSession(model))); default: var error = _v0.a; return $author$project$Page$Calendar$failureView(error); diff --git a/src/Api.elm b/src/Api.elm index da02f97..5492f9f 100644 --- a/src/Api.elm +++ b/src/Api.elm @@ -167,7 +167,7 @@ getRoleFromMaybeCred maybecred = getRole : Decoder Role getRole = - Decode.at [ "https://hasura.io/jwt/claims", "x-hasura-allowed-roles" ] (Decode.index 0 Decode.string) + Decode.at [ "https://hasura.io/jwt/claims", "x-hasura-default-role" ] Decode.string |> Decode.map (\string -> if string == "Psy" then diff --git a/src/Main.elm b/src/Main.elm index 8bb6952..5b205e0 100644 --- a/src/Main.elm +++ b/src/Main.elm @@ -124,8 +124,14 @@ changeRouteTo maybeRoute model = |> updateWith Calendar GotCalendarMsg Just Route.Patients -> - Patients.init session - |> updateWith Patients GotPatientsMsg + case Api.getRoleFromMaybeCred cred of + Api.Psy -> + Patients.init session + |> updateWith Patients GotPatientsMsg + + _ -> + -- Redirect user to Calendar if he is not a psy + ( Redirect session, Cmd.batch [ Route.replaceUrl (Session.navKey session) Route.Calendar, Task.perform CheckToken Time.now ] ) Just _ -> -- Redirects root to calendar page, @@ -143,11 +149,21 @@ changeRouteTo maybeRoute model = Nothing -> -- Redirects to login page if the expression is malformed - ( Redirect session, Nav.load "https://psy-app.eu.auth0.com/login?client=rcd2TG98zW4rEN4mq3PgxEe3hMQfPDWf&protocol=oauth2&response_type=token%20id_token&scope=openid%20profile" ) + ( Redirect session, Nav.load loginUrl ) _ -> -- Redirects to login page if there are no credentials - ( Redirect session, Nav.load "https://psy-app.eu.auth0.com/login?client=rcd2TG98zW4rEN4mq3PgxEe3hMQfPDWf&protocol=oauth2&response_type=token%20id_token&scope=openid%20profile" ) + ( Redirect session, Nav.load loginUrl ) + + +loginUrl : String +loginUrl = + "https://psy-app.eu.auth0.com/" + ++ "login?client=rcd2TG98zW4rEN4mq3PgxEe3hMQfPDWf" + ++ "&protocol=oauth2" + ++ "&response_type=token%20id_token" + ++ "&redirect_uri=http://localhost:8000" + ++ "&scope=openid%20profile" update : Msg -> Model -> ( Model, Cmd Msg ) diff --git a/src/Page.elm b/src/Page.elm index 8168458..b90b731 100644 --- a/src/Page.elm +++ b/src/Page.elm @@ -2,6 +2,7 @@ module Page exposing (view) import Api exposing (Cred, Role) import Browser exposing (Document) +import Debug exposing (log) import Element exposing (..) import Element.Background as Background import Element.Border as Border @@ -23,7 +24,7 @@ view maybeCred { title, body } = viewHeader : Maybe Cred -> Element msg viewHeader maybeCred = row [ width fill, Background.color (rgb255 111 144 166) ] <| - (case Api.getRoleFromMaybeCred maybeCred of + (case log "Role" (Api.getRoleFromMaybeCred maybeCred) of Api.Psy -> [ link [ width fill ] { url = "patients" @@ -53,23 +54,7 @@ viewHeader maybeCred = } ] - Api.User -> - [ link [ width fill ] - { url = "calendar" - , label = - el - [ width fill - , padding 30 - , Background.color (rgb255 111 144 166) - , mouseOver [ Background.color (rgb255 140 179 196) ] - , Element.focused [ Background.color (rgb255 24 52 61), Font.color (rgb255 214 217 216) ] - ] - <| - el [ centerX, centerY ] (text "Calendrier") - } - ] - - Api.None -> + _ -> [ none ] ) ++ [ link [ width fill ] diff --git a/src/Page/Calendar.elm b/src/Page/Calendar.elm index ef4fe71..10a0eef 100644 --- a/src/Page/Calendar.elm +++ b/src/Page/Calendar.elm @@ -10,6 +10,7 @@ import Api.Query as Query exposing (..) import Api.Scalar exposing (..) import Api.ScalarCodecs import Browser exposing (Document) +import Debug exposing (log) import Element exposing (..) import Element.Background as Background import Element.Border as Border @@ -222,7 +223,7 @@ view model = (text "Nous importons vos données, merci de patienter.") Success response -> - successView response data.form data.addAgendaData + successView response data.form data.addAgendaData <| Session.cred <| toSession model Failure error -> failureView error @@ -230,8 +231,8 @@ view model = } -successView : List Agenda -> Form -> AddAgendaData -> Element Msg -successView response form addAgendaData = +successView : List Agenda -> Form -> AddAgendaData -> Maybe Cred -> Element Msg +successView response form addAgendaData maybeCred = let error = case addAgendaData of @@ -243,32 +244,39 @@ successView response form addAgendaData = _ -> text "" in - column [ centerX, centerY, Background.color (rgb255 214 217 216), height fill, width fill ] + column [ centerX, centerY, Background.color (rgb255 214 217 216), height fill, width fill ] <| [ row [ centerX, padding 50 ] [ image [ width (fill |> maximum 80) ] { src = "logo.png", description = "logo" } , el [ Font.color (rgb255 111 144 166), Font.size 80 ] (text "Votre liste de rendez-vous") , image [ width (fill |> maximum 80) ] { src = "logo.png", description = "logo" } ] - , agendaTable response - , row [ centerX, padding 30 ] - [ textInput EnteredDate form.date "AAAA-MM-JJ" "Date" - , textInput EnteredHeure form.heure "HH:MM:SS+TZ" "Heure" - ] - , Input.button [ centerX, centerY ] - { label = - el - [ padding 30 - , Border.rounded 5 - , Background.color (rgb255 111 144 166) - , mouseOver [ Background.color (rgb255 140 179 196) ] - , Element.focused [ Background.color (rgb255 24 52 61), Font.color (rgb255 214 217 216) ] - ] - (text "Ajouter un nouvel agenda") - , onPress = Just AddAgenda - } - , el [ centerX, centerY, Font.color (rgb255 200 30 30) ] - error + , agendaTable response maybeCred ] + ++ (case log "Role" (Api.getRoleFromMaybeCred maybeCred) of + Api.Psy -> + [ row [ centerX, padding 30 ] + [ textInput EnteredDate form.date "AAAA-MM-JJ" "Date" + , textInput EnteredHeure form.heure "HH:MM:SS+TZ" "Heure" + ] + , Input.button [ centerX, centerY ] + { label = + el + [ padding 30 + , Border.rounded 5 + , Background.color (rgb255 111 144 166) + , mouseOver [ Background.color (rgb255 140 179 196) ] + , Element.focused [ Background.color (rgb255 24 52 61), Font.color (rgb255 214 217 216) ] + ] + (text "Ajouter un nouvel agenda") + , onPress = Just AddAgenda + } + , el [ centerX, centerY, Font.color (rgb255 200 30 30) ] + error + ] + + _ -> + [ none ] + ) textInput : (String -> Msg) -> String -> String -> String -> Element Msg @@ -281,8 +289,8 @@ textInput msg formtext placeholder label = } -agendaTable : List Agenda -> Element Msg -agendaTable response = +agendaTable : List Agenda -> Maybe Cred -> Element Msg +agendaTable response maybeCred = let dateToString = \(Date string) -> string @@ -301,26 +309,33 @@ agendaTable response = , width = fill , view = \agenda -> tableField (timeToString agenda.heure) } - , { header = tableField "Supprimer agenda" - , width = fill - , view = - \agenda -> - Input.button [ Border.width 1, Background.color (rgb255 140 179 196) ] - --X background X - { onPress = Just (DeleteAgenda agenda) - , label = - el - [ centerX - , centerY - , padding 23 - , Font.color (rgb255 255 50 50) - , mouseOver [ Font.color (rgb255 200 30 30) ] - , Element.focused [ Font.color (rgb255 100 10 10) ] - ] - (text "X") - } - } ] + ++ (case log "Role" (Api.getRoleFromMaybeCred maybeCred) of + Api.Psy -> + [ { header = tableField "Supprimer agenda" + , width = fill + , view = + \agenda -> + Input.button [ Border.width 1, Background.color (rgb255 140 179 196) ] + --X background X + { onPress = Just (DeleteAgenda agenda) + , label = + el + [ centerX + , centerY + , padding 23 + , Font.color (rgb255 255 50 50) + , mouseOver [ Font.color (rgb255 200 30 30) ] + , Element.focused [ Font.color (rgb255 100 10 10) ] + ] + (text "X") + } + } + ] + + _ -> + [] + ) }