Skip to content

Instantly share code, notes, and snippets.

@vishwanatharondekar
Created February 18, 2017 11:14
Show Gist options
  • Save vishwanatharondekar/526945bded49771be0fa5b2b63886856 to your computer and use it in GitHub Desktop.
Save vishwanatharondekar/526945bded49771be0fa5b2b63886856 to your computer and use it in GitHub Desktop.
export const mobileRenderable = function (target, name, descriptor) {
//Do this only on client side
if (canUseDOM) {
console.log('mobileRenderable getting applied client')
const originalRender = target.prototype.render
let mobileRender = target.prototype.renderMobile
//Throw warning if user has used mobileRenderable but have not provided renderMobile
if (!mobileRender) {
console.warn(target, ' is decorated with mobileRenderable but renderMobile function is not provided. Regular render will be used.')
mobileRender = originalRender
}
//Device identification
let device = deviceIdentification().formFactor || 'desktop'
let functionToCall = null
if (device === 'mobile') {
functionToCall = mobileRender
} else {
functionToCall = originalRender
}
target.prototype.render = functionToCall
//Keep reference of the original render method in case you need it in renderMobile
target.prototype.__render = target.prototype.__render || originalRender
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment