WorkshopSee More
Custom Builds
0) {
console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else if (liquidCacheAge
<= LIQUID_CACHE_MAX_AGE) {
console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`);
window._RestockRocketConfig.isLiquidCacheFresh = false;
}
}
function checkSettingsExpiry(settings) {
try {
if (!settings || !settings.updated_at) {
console.debug('STOQ - Invalid settings data structure');
return null;
}
if (!settings.cache) {
console.debug('STOQ - settings caching disabled');
return null;
}
// Check if translations are enabled but missing from cache
// This handles the backfill period where DB has translations but metafield doesn't
if (settings.multi_language_enabled) {
if (!settings.translations) {
// Translations enabled but no
translation data in metafield
// Metafield hasn't been backfilled yet - force refresh
console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh');
return null;
}
// Translations object exists in metafield - cache is valid
// If current locale isn't translated, applyTranslations will gracefully use default locale from base fields
if (window._RestockRocketConfig.normalizedLocale &&
!Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) {
console.debug('STOQ - locale not explicitly translated, will use default language from cache');
}
// Don't return null - continue using cache even for untranslated locales
}
const updatedAt = new Date(settings.updated_at);
if (isNaN(updatedAt.getTime())) {
console.debug('STOQ - Invalid updated_at date format in settings');
return null;
}
const age = Date.now() - updatedAt.getTime();
if (age
Hope<
See More
Tyres
Road / Gravel / Touring Bikes
Product DetailsHybrid / City Bikes
Challenging environments and heavy loads are no match for the uncompromising and award-winning Boost E. This compact and extremely sturdy Etility® bike is always ready for the next adventure – close to home or far from civilisation.Mountain Bikes
The rigid aluminium frame and big 24” x 2.6” custom tyres combine with the Bosch Performance Line CX Electric motor to provide a powerful yet composed ride. The unique upright riding position and ergonomic handlebar design lets you ride with purpose without sacrificing comfort and manoeuvrability. And a smart, interchangeable rack and rail system lets you pick and choose from dozens of possible configurations to suit the mission. Capability meets versatility to make the Boost E the choice of professional rescue teams, adventurists, bike couriers and everyday suburban explorers.
Electric Bikes
Kids Bikes
SPECS:
Frames
- Bosch Purion On-Board Computer (5 Riding Modes)
- Motor: Bosch Performance CX Cargo 250W, 75Nm, GEN 4
Shop by Brand- Battery: Bosch Powerpack 500Wh Lithium-Ion Battery
Gloria- Dual Battery Compatible (Not Included)
- Range 25-160mi (40-260km) Dep. On Mode/BatteryTrek
- Bosch 4A Compact Charger (4.5h Full Charge)
Amflow- 6061 Aluminum Alloy Frame with Front Tray Mounts
- Oversized 6061 Aluminum Alloy Fork w/ Integrated HeadsetYeti