extends PanelContainer var chatter: Chatter: set(value): chatter = value if not chatter: _clear_promos() return _populate_promos() func _ready() -> void: for btn in [%Streamer, %Shoutout, %Promote]: btn.pressed.connect(_update_promos) for le in [%YouTubeHandle, %BlueSkyHandle, %WebSite, %ShoutoutMessage, %PromotionMessage]: le.text_changed.connect(_update_promos) if not chatter: return _populate_promos() func _clear_promos() -> void: %Streamer.button_pressed = false %Shoutout.button_pressed = false %Promote.button_pressed = false %YouTubeHandle.text = "" %BlueSkyHandle.text = "" %WebSite.text = "" %ShoutoutMessage.text = "" %PromotionMessage.text = "" func _populate_promos() -> void: %Streamer.button_pressed = chatter.is_streamer %Shoutout.button_pressed = chatter.auto_shoutout %Promote.button_pressed = chatter.extra_data.has("auto-promo") %YouTubeHandle.text = chatter.urls.youtube if chatter.urls.has("youtube") else "" %BlueSkyHandle.text = chatter.urls.bluesky if chatter.urls.has("bluesky") else "" %WebSite.text = chatter.urls.website if chatter.urls.has("website") else "" %ShoutoutMessage.text = chatter.extra_data.shoutout_message if chatter.extra_data.has("shoutout_message") else "" %PromotionMessage.text = chatter.extra_data.promotion_message if chatter.extra_data.has("promotion_message") else "" func _update_promos() -> void: if not chatter: return chatter.is_streamer = %Streamer.button_pressed chatter.auto_shoutout = %Shoutout.button_pressed chatter.extra_data["auto_promo"] = %Promote.button_pressed if %YouTubeHandle.text != "": chatter.urls["youtube"] = %YouTubeHandle.text else: chatter.urls.erase("youtube") if %BlueSkyHandle.text != "": chatter.urls["bluesky"] = %BlueSkyHandle.text else: chatter.urls.erase("bluesky") if %WebSite.text != "": chatter.urls["website"] = %WebSite.text else: chatter.urls.erase("website") if %ShoutoutMessage.text != "": chatter.extra_data.shoutout_message = %ShoutoutMessage.text else: chatter.extra_data.erase("shoutout_message") if %PromotionMessage.text != "": chatter.extra_data.promotion_message = %PromotionMessage.text else: chatter.extra_data.erase("promotion_message") chatter.save()