in src/dispatch/plugins/dispatch_slack/middleware.py [0:0]
def modal_submit_middleware(body: dict, context: BoltContext, next: Callable) -> None:
"""Parses view data into a reasonable data struct."""
parsed_data = {}
state_elem = body["view"].get("state")
state_values = state_elem.get("values")
for state in state_values:
state_key_value_pair = state_values[state]
for elem_key in state_key_value_pair:
elem_key_value_pair = state_values[state][elem_key]
if elem_key_value_pair.get("selected_option") and elem_key_value_pair.get(
"selected_option"
).get("value"):
parsed_data[state] = {
"name": elem_key_value_pair.get("selected_option").get("text").get("text"),
"value": elem_key_value_pair.get("selected_option").get("value"),
}
elif elem_key_value_pair.get("selected_user"):
parsed_data[state] = {
"name": "user",
"value": elem_key_value_pair.get("selected_user"),
}
elif "selected_options" in elem_key_value_pair.keys():
name = "No option selected"
value = ""
if elem_key_value_pair.get("selected_options"):
options = []
for selected in elem_key_value_pair["selected_options"]:
name = selected.get("text").get("text")
value = selected.get("value")
options.append({"name": name, "value": value})
parsed_data[state] = options
elif elem_key_value_pair.get("selected_date"):
parsed_data[state] = elem_key_value_pair.get("selected_date")
else:
parsed_data[state] = elem_key_value_pair.get("value")
context["form_data"] = parsed_data
next()