Created
February 18, 2017 11:14
-
-
Save vishwanatharondekar/526945bded49771be0fa5b2b63886856 to your computer and use it in GitHub Desktop.
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
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