Last active
July 16, 2020 13:37
-
-
Save toioski/57171b8b207cde0b0c9cb4e88a691e40 to your computer and use it in GitHub Desktop.
Monetate "Message" JSON response
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Excel reference file: https://docs.google.com/spreadsheets/d/1QqrhoaTxDEbzShiJHBdLbL_zs2dhvN355AQJ2fRbIx4 | |
| |
enum Language { | |
ar = "ar", | |
de = "de", | |
en = "en", | |
es = "es", | |
fr = "fr", | |
it = "it", | |
zh = "zh", | |
ko = "ko" | |
} | |
| |
enum ShopDepartment { | |
Women = "women", | |
Men = "men", | |
Kids = "kids" | |
} | |
| |
// Ask Vittorio ([email protected]) to know which icon is behind each name | |
interface IconTypes { | |
arrowContent: string | |
arrowDownContent: string | |
caretLeft: string | |
caretRight: string | |
checkGrey: string | |
checkWhite: string | |
close: string | |
debug: string | |
designers: string | |
filter: string | |
fta: string | |
gold: string | |
heartBlack: string | |
heartGrey: string | |
heartPink: string | |
loadingSpinnerDark: string | |
loadingSpinnerLight: string | |
menu: string | |
metallic: string | |
multicolor: string | |
mythLogo: string | |
newArrivals: string | |
newArrivalsCh: string | |
return: string | |
ruler: string | |
search: string | |
share: string | |
shoppingBag: string | |
silver: string | |
tick: string | |
truck: string | |
wishlist: string | |
} | |
| |
// Explanation | |
// 1. the question mark (?) means that the key is optional | |
// 2. the "icon" value could be either an icon already present inside the app or a URL to an external image. | |
// In the former case, you pass as value one of the strings defined by the interface IconTypes, in the latter | |
// you give a URL to an external image (maximum size allowed is 3KB) | |
interface MonetateApiMessage { | |
messages: [{ | |
contentByLanguage?: { [K in Language]?: string } | |
contentByStoreview?: { [channel: string]: string } | |
color?: string // Color of the text of the message | |
icon?: IconTypes | string // The icon is placed before the text | |
}] | |
backgroundColor?: string // Background color of the banner | |
interval?: number // Number of milliseconds to slide between messages (default is 3000) | |
url?: { [D in ShopDepartment]: string } // Relative URL to visit on press on the banner | |
priority?: number // If there are multiple TopLevelBanner experiences active, the higher priority will win | |
} | |
| |
// Examples | |
const response = { | |
topLevelBanner: { | |
messages: [ | |
{ | |
contentByStoreview: { | |
"en-it": "Specific message for english speaking users in Itally" | |
}, | |
icon: "checkGrey" | |
}, | |
{ | |
contentByLanguage: { | |
de: "Home mitteilung custom", // if a language is not defined, no content will be displayed for that language | |
en: "Home message custom", | |
it: "Home messaggio custom" | |
}, | |
icon: "search" | |
}, | |
{ | |
contentByStoreview: { | |
"en-de": "Specific message for english speaking users in Germany" | |
}, | |
contentByLanguage: { | |
de: "Generic message for German-speaking", | |
en: "Generic message for English-speaking users outside of Germany", | |
it: "Generic message for Italian-speaking" | |
}, | |
icon: "https://i.ibb.co/wCmcdNj/heart-black-4x.png" | |
} | |
], | |
interval: 4000, | |
url: { | |
men: "men/new-arrivals.html", | |
women: "new-arrivals.html", | |
kids: "kids/new-arrivals.html" | |
}, | |
priority: 1 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment