summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-08-26 17:00:57 +0200
committerChristian Grothoff <christian@grothoff.org>2021-08-26 17:00:57 +0200
commit25e3c3d4cbca8ecaf1625b1add41d6b030e1091a (patch)
treef33b42819584477fb286533423cfc8bc0b0ee464
parentf353d4d342ed59cad58a6f0d5656c97e4f35f80b (diff)
downloadanastasis-gtk-25e3c3d4cbca8ecaf1625b1add41d6b030e1091a.tar.gz
anastasis-gtk-25e3c3d4cbca8ecaf1625b1add41d6b030e1091a.tar.bz2
anastasis-gtk-25e3c3d4cbca8ecaf1625b1add41d6b030e1091a.zip
show IBAN dialog
-rw-r--r--contrib/anastasis_gtk_challenge_iban.glade40
-rw-r--r--src/anastasis/anastasis-gtk_action.c96
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,