package com.fireworksdk.bridge.models import com.fireworksdk.bridge.models.enums.FWVideoFeedTitlePosition import org.json.JSONObject object FWVideoFeedConfigModelSerializer { private const val BACKGROUND_COLOR_KEY = "backgroundColor" private const val CORNER_RADIUS_KEY = "cornerRadius" private const val ASPECT_RATIO_KEY = "aspectRatio" private const val TITLE_KEY = "title" private const val TITLE_POSITION_KEY = "titlePosition" private const val PLAY_ICON_KEY = "playIcon" private const val SHOW_AD_BADGE_KEY = "showAdBadge" private const val ENABLE_AUTOPLAY_KEY = "enableAutoplay" private const val GRID_COLUMNS_KEY = "gridColumns" private const val ITEM_SPACING_KEY = "itemSpacing" private const val CONTENT_PADDING_KEY = "contentPadding" private const val HIDDEN_KEY = "hidden" private const val TEXT_COLOR_KEY = "textColor" private const val FONT_SIZE_KEY = "fontSize" private const val NUMBER_OF_LINES = "numberOfLines" private const val FONT_INFO_KEY = "androidFontInfo" private const val GRADIENT_DRAWABLE_KEY = "gradientDrawable" private const val ICON_WIDTH_KEY = "iconWidth" private const val IMAGE_NAME_KEY = "imageName" private const val PADDING_TOP_KEY = "top" private const val PADDING_RIGHT_KEY = "right" private const val PADDING_BOTTOM_KEY = "bottom" private const val PADDING_LEFT_KEY = "left" fun serialize(model: FWVideoFeedConfigModel?): JSONObject? { model ?: return null val jsonObject = JSONObject() jsonObject.put(BACKGROUND_COLOR_KEY, model.backgroundColor) jsonObject.put(CORNER_RADIUS_KEY, model.cornerRadius) jsonObject.put(ASPECT_RATIO_KEY, model.aspectRatio) jsonObject.put(TITLE_KEY, serializeTitle(model.title)) jsonObject.put(TITLE_POSITION_KEY, FWVideoFeedTitlePosition.serialize(model.titlePosition)) jsonObject.put(PLAY_ICON_KEY, serializePlayIcon(model.playIcon)) jsonObject.put(SHOW_AD_BADGE_KEY, model.showAdBadge) jsonObject.put(ENABLE_AUTOPLAY_KEY, model.enableAutoplay) jsonObject.put(GRID_COLUMNS_KEY, model.gridColumns) jsonObject.put(ITEM_SPACING_KEY, model.itemSpacing) jsonObject.put(CONTENT_PADDING_KEY, serializePadding(model.contentPadding)) return jsonObject } private fun serializeTitle(model: FWVideoFeedConfigModel.FWTitleModel?): JSONObject? { model ?: return null val jsonObject = JSONObject() jsonObject.put(HIDDEN_KEY, model.hidden) jsonObject.put(TEXT_COLOR_KEY, model.textColor) jsonObject.put(FONT_SIZE_KEY, model.fontSize) jsonObject.put(NUMBER_OF_LINES, model.numberOfLines) jsonObject.put(FONT_INFO_KEY, FWFontInfoModelSerializer.serialize(model.fontInfo)) jsonObject.put(GRADIENT_DRAWABLE_KEY, FWGradientDrawableModelSerializer.serialize(model.gradientDrawable)) return jsonObject } private fun serializePlayIcon(model: FWVideoFeedConfigModel.FWPlayIconModel?): JSONObject? { model ?: return null val jsonObject = JSONObject() jsonObject.put(HIDDEN_KEY, model.hidden) jsonObject.put(ICON_WIDTH_KEY, model.iconWidth) jsonObject.put(IMAGE_NAME_KEY, model.imageName) return jsonObject } private fun serializePadding(model: FWVideoFeedConfigModel.FWPaddingModel?): JSONObject? { model ?: return null val jsonObject = JSONObject() jsonObject.put(PADDING_TOP_KEY, model.top) jsonObject.put(PADDING_RIGHT_KEY, model.right) jsonObject.put(PADDING_BOTTOM_KEY, model.bottom) jsonObject.put(PADDING_LEFT_KEY, model.left) return jsonObject } }