From 82e03978b89938219958032efb1448cc76baa181 Mon Sep 17 00:00:00 2001 From: Saumit Date: Sat, 27 Sep 2025 02:14:26 +0530 Subject: Initial snapshot - OpenTelemetry demo 2.1.3 -f --- .../lib/flagd_ui_web/live/advanced_editor.ex | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/flagd-ui/lib/flagd_ui_web/live/advanced_editor.ex (limited to 'src/flagd-ui/lib/flagd_ui_web/live/advanced_editor.ex') diff --git a/src/flagd-ui/lib/flagd_ui_web/live/advanced_editor.ex b/src/flagd-ui/lib/flagd_ui_web/live/advanced_editor.ex new file mode 100644 index 0000000..fbecaa8 --- /dev/null +++ b/src/flagd-ui/lib/flagd_ui_web/live/advanced_editor.ex @@ -0,0 +1,92 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +defmodule FlagdUiWeb.AdvancedEditor do + use FlagdUiWeb, :live_view + + alias FlagdUiWeb.CoreComponents + alias FlagdUiWeb.Components.Navbar + + def mount(_, _, socket) do + state = GenServer.call(Storage, :read) + content = Jason.encode!(state, pretty: true) + + {:ok, + socket + |> assign(content: content) + |> assign(unsaved_changes: false)} + end + + def render(assigns) do + ~H""" +
+ + + + + +
+ <.form for={%{}}> + +
+ +

Unsaved changes

+
+ +
+
+ """ + end + + def handle_event("edit", payload, socket) do + %{"content" => content} = payload + + {:noreply, + socket + |> assign(content: content) + |> assign(unsaved_changes: true)} + end + + def handle_event( + "save", + _, + %{ + assigns: %{ + content: content + } + } = socket + ) do + new_socket = + case Jason.decode(content) do + {:ok, _} -> + trimmed_content = String.trim(content) + + GenServer.cast(Storage, {:replace, trimmed_content}) + + socket + |> assign(unsaved_changes: false) + |> assign(content: trimmed_content) + |> clear_flash() + |> put_flash(:info, "Saved!") + + {:error, _} -> + put_flash(socket, :error, "Invalid JSON") + end + + {:noreply, new_socket} + end +end -- cgit v1.2.3