diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-08-26 17:00:57 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-08-26 17:00:57 +0200 |
commit | 25e3c3d4cbca8ecaf1625b1add41d6b030e1091a (patch) | |
tree | f33b42819584477fb286533423cfc8bc0b0ee464 | |
parent | f353d4d342ed59cad58a6f0d5656c97e4f35f80b (diff) | |
download | anastasis-gtk-25e3c3d4cbca8ecaf1625b1add41d6b030e1091a.tar.gz anastasis-gtk-25e3c3d4cbca8ecaf1625b1add41d6b030e1091a.tar.bz2 anastasis-gtk-25e3c3d4cbca8ecaf1625b1add41d6b030e1091a.zip |
show IBAN dialog
-rw-r--r-- | contrib/anastasis_gtk_challenge_iban.glade | 40 | ||||
-rw-r--r-- | src/anastasis/anastasis-gtk_action.c | 96 |
2 files changed, 85 insertions, 51 deletions
diff --git a/contrib/anastasis_gtk_challenge_iban.glade b/contrib/anastasis_gtk_challenge_iban.glade index 8eaea25..b666146 100644 --- a/contrib/anastasis_gtk_challenge_iban.glade +++ b/contrib/anastasis_gtk_challenge_iban.glade @@ -28,10 +28,10 @@ Author: Christian Grothoff <!-- interface-description key backup and recovery --> <!-- interface-copyright 2019-2021 Anastasis SARL --> <!-- interface-authors Christian Grothoff --> - <object class="GtkDialog" id="anastasis_gtk_c_question_dialog"> + <object class="GtkDialog" id="anastasis_gtk_c_iban_dialog"> <property name="can-focus">False</property> <property name="type-hint">dialog</property> - <signal name="response" handler="anastasis_gtk_c_question_dialog_response_cb" swapped="no"/> + <signal name="response" handler="anastasis_gtk_c_iban_dialog_response_cb" swapped="no"/> <child internal-child="vbox"> <object class="GtkBox"> <property name="can-focus">False</property> @@ -42,10 +42,10 @@ Author: Christian Grothoff <property name="can-focus">False</property> <property name="layout-style">end</property> <child> - <object class="GtkButton" id="anastasis_gtk_c_question_dialog_btn_close"> + <object class="GtkButton" id="anastasis_gtk_c_iban_dialog_btn_close"> <property name="label">gtk-close</property> <property name="visible">True</property> - <property name="sensitive">False</property> + <property name="sensitive">True</property> <property name="can-focus">False</property> <property name="can-default">True</property> <property name="has-default">True</property> @@ -71,7 +71,7 @@ Author: Christian Grothoff </packing> </child> <child> - <object class="GtkLabel" id="anastasis_gtk_c_question_error_label"> + <object class="GtkLabel" id="anastasis_gtk_c_iban_error_label"> <property name="can-focus">False</property> <property name="label">ERROR MESSAGE (SET DYNAMICALLY BY PROGRAM)</property> <attributes> @@ -123,6 +123,7 @@ to pay the Anastasis provider for its service.</property> </child> <child> <object class="GtkBox"> + <property name="visible">True</property> <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> @@ -132,7 +133,7 @@ to pay the Anastasis provider for its service.</property> <property name="halign">start</property> <property name="margin-start">30</property> <property name="margin-end">30</property> - <property name="label">SET DYNAMICALLY BY PROGRAM (NOT IMPLEMENTED)</property> + <property name="label">SET DYNAMICALLY BY PROGRAM</property> <attributes> <attribute name="style" value="italic"/> <attribute name="weight" value="bold"/> @@ -170,17 +171,6 @@ to pay the Anastasis provider for its service.</property> </packing> </child> <child> - <object class="GtkSeparator"> - <property name="visible">True</property> - <property name="can-focus">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">3</property> - </packing> - </child> - <child> <object class="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -232,6 +222,17 @@ to pay the Anastasis provider for its service.</property> </packing> </child> <child> + <object class="GtkSeparator"> + <property name="visible">True</property> + <property name="can-focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> <object class="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> @@ -413,9 +414,6 @@ open the resulting file later to continue.</property> </child> </object> </child> - <action-widgets> - <action-widget response="-7">anastasis_gtk_c_question_dialog_btn_close</action-widget> - </action-widgets> <child type="titlebar"> <object class="GtkLabel"> <property name="visible">True</property> @@ -424,7 +422,7 @@ open the resulting file later to continue.</property> </object> </child> <action-widgets> - <action-widget response="-7">anastasis_gtk_c_question_dialog_btn_close</action-widget> + <action-widget response="-7">anastasis_gtk_c_iban_dialog_btn_close</action-widget> </action-widgets> </object> </interface> diff --git a/src/anastasis/anastasis-gtk_action.c b/src/anastasis/anastasis-gtk_action.c index 82c00bb..6d2bdb9 100644 --- a/src/anastasis/anastasis-gtk_action.c +++ b/src/anastasis/anastasis-gtk_action.c @@ -1840,6 +1840,8 @@ translate_state (const char *state) .out = _ ("wait, tries exceeded") }, { .in = "authentication-timeout", .out = _ ("awaiting completion of authentication process") }, + { .in = "external-instructions", + .out = _ ("challenge-specific action required") }, { .in = NULL, .out = NULL } }; @@ -2748,6 +2750,7 @@ diag_question (const json_t *details) uuid_str = json_string_value (json_object_get (details, "uuid")); + /* Why do we do this? */ render_feedback (builder, "anastasis_gtk_c_question_error_label", uuid_str); @@ -2766,6 +2769,27 @@ static GtkDialog * diag_code (const json_t *details) { GtkBuilder *builder; + const char *instructions; + const char *uuid_str; + struct GNUNET_JSON_Specification spec[] = { + GNUNET_JSON_spec_string ("instructions", + &instructions), + GNUNET_JSON_spec_string ("uuid", + &uuid_str), + GNUNET_JSON_spec_end () + }; + + if (GNUNET_OK != + GNUNET_JSON_parse (details, + spec, + NULL, NULL)) + { + GNUNET_break (0); + json_dumpf (details, + stderr, + JSON_INDENT (2)); + return NULL; + } builder = GNUNET_GTK_get_new_builder ("anastasis_gtk_challenge_code.glade", NULL); @@ -2776,25 +2800,16 @@ diag_code (const json_t *details) } { GtkLabel *label; - const char *instructions; label = GTK_LABEL (gtk_builder_get_object (builder, "challenge_instructions_label")); - instructions = json_string_value (json_object_get (details, - "instructions")); gtk_label_set_text (label, instructions); - } - { - GtkLabel *clabel; - const char *uuid_str; - - clabel = GTK_LABEL (gtk_builder_get_object (builder, - "anastasis_gtk_c_challenge_label")); - uuid_str = json_string_value (json_object_get (details, - "uuid")); - gtk_label_set_text (clabel, + label = GTK_LABEL (gtk_builder_get_object (builder, + "anastasis_gtk_c_challenge_label")); + gtk_label_set_text (label, uuid_str); + /* Why do we do this? */ render_feedback (builder, "anastasis_gtk_c_code_error_label", uuid_str); @@ -2823,15 +2838,13 @@ diag_iban (const json_t *details) const char *credit_iban; const char *business; const char *subject; + const char *uuid_str; + const char *debit_iban_hint; struct GNUNET_JSON_Specification spec[] = { - TALER_JSON_spec_amount_any ("challenge_amount", - &amount), - GNUNET_JSON_spec_string ("credit_iban", - &credit_iban), - GNUNET_JSON_spec_string ("business_name", - &business), - GNUNET_JSON_spec_string ("wire_transfer_subject", - &subject), + GNUNET_JSON_spec_string ("uuid", + &uuid_str), + GNUNET_JSON_spec_string ("instructions", + &debit_iban_hint), GNUNET_JSON_spec_end () }; @@ -2846,6 +2859,38 @@ diag_iban (const json_t *details) JSON_INDENT (2)); return NULL; } + { + json_t *cf = json_object_get (AG_redux_state, + "challenge_feedback"); + json_t *ci = json_object_get (cf, + uuid_str); + json_t *cd = json_object_get (ci, + "details"); + struct GNUNET_JSON_Specification ispec[] = { + TALER_JSON_spec_amount_any ("challenge_amount", + &amount), + GNUNET_JSON_spec_string ("credit_iban", + &credit_iban), + GNUNET_JSON_spec_string ("business_name", + &business), + GNUNET_JSON_spec_string ("wire_transfer_subject", + &subject), + GNUNET_JSON_spec_end () + }; + + if ( (NULL == cd) || + (GNUNET_OK != + GNUNET_JSON_parse (cd, + ispec, + NULL, NULL)) ) + { + GNUNET_break (0); + json_dumpf (AG_redux_state, + stderr, + JSON_INDENT (2)); + return NULL; + } + } builder = GNUNET_GTK_get_new_builder ("anastasis_gtk_challenge_iban.glade", NULL); @@ -2857,19 +2902,10 @@ diag_iban (const json_t *details) { GtkLabel *label; -#if 0 - /* Note: need to extract the hint from the global - state, but not sure if the JSON argument gives - us the required data... */ label = GTK_LABEL (gtk_builder_get_object (builder, "debit_account_label")); gtk_label_set_text (label, debit_iban_hint); -#else - json_dumpf (details, - stderr, - JSON_INDENT (2)); -#endif label = GTK_LABEL (gtk_builder_get_object (builder, "credit_account_label")); gtk_label_set_text (label, |