Adjust European short trip heuristic from >3 days to >1 day to correctly detect when user has returned home from European trips. This fixes the April 29-30, 2023 case where the location incorrectly showed "Sankt Georg, Hamburg" instead of "Bristol" when the user was free (no events scheduled) after the foss-north trip ended on April 27. The previous logic required more than 3 days to pass before assuming return home from European countries, but for short European trips by rail/ferry, users typically return within 1-2 days. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* getOrInsert is a helper function for maps that allows you to get a value
|
|
* from a map if it exists, or insert a new value if it doesn't. If it value doesn't
|
|
* exist, it will be computed by the provided function.
|
|
*
|
|
* @template K
|
|
* @template V
|
|
* @param {Map<K, V>} map The map object to check
|
|
* @param {K} key The key to check
|
|
* @param {function(): V} computer function which will compute the value if it doesn't exist
|
|
* @returns {V} The value from the map, or the computed value
|
|
*
|
|
* @example
|
|
* ```js
|
|
* const map = new Map();
|
|
* const value = getOrInsert(map, "key", () => "value");
|
|
* console.log(value); // "value"
|
|
* ```
|
|
*/
|
|
exports.getOrInsert = (map, key, computer) => {
|
|
// Grab key from map
|
|
const value = map.get(key);
|
|
// If the value already exists, return it
|
|
if (value !== undefined) return value;
|
|
// Otherwise compute the value, set it in the map, and return it
|
|
const newValue = computer();
|
|
map.set(key, newValue);
|
|
return newValue;
|
|
};
|