@@ -1,5 +1,6 @@
1namespace Skrepka
1namespace Skrepka
3open Fabulous.Avalonia
4open Fabulous.Avalonia
5open type Fabulous.Avalonia.View
6open type Fabulous.Avalonia.View
@@ -8,22 +9,46 @@ module ViewAddContact =
9 open AppTypes
10 open AppTypes
12+ let private qrBytes (text: string) =
13+ use qr = new QRCoder.QRCodeGenerator()
14+ use data = qr.CreateQrCode(text, QRCoder.QRCodeGenerator.ECCLevel.M)
15+ use png = new QRCoder.PngByteQRCode(data)
16+ png.GetGraphic(8, [| 0uy; 0uy; 0uy |], [| 255uy; 255uy; 255uy |])
11 let viewAddContact model cpk cnn =
18 let viewAddContact model cpk cnn =
12− (VStack(16.) {
20+ (VStack(16.) {
13− HStack(8.) {
21+ HStack(8.) {
14− Button("< Back", SetPage Conversations)
22+ Button("< Back", SetPage Conversations)
24+ TextBlock("Add Contact").fontSize (20.)
27+ match model.Auth with
28+ | Identified(id, _) ->
29+ let ob = hexToOb id.PubKeyHex
31+ TextBlock("Your key (share with contact):").foreground (SolidColorBrush(Colors.DimGray))
33+ Image(Styles.cachedBitmap (qrBytes ob), Stretch.Uniform)
37+ TextBlock(truncKey id.PubKeyHex)
16− TextBlock("Add Contact").fontSize (20.)
38+ .fontSize(12.)
17− }
39+ .foreground(SolidColorBrush(Colors.DimGray))
19− viewErrorBanner model.Error
43+ viewErrorBanner model.Error
21− TextBlock("Public Key:")
45+ TextBlock("Public Key:")
22− TextBox(cpk, fun text -> SetPage(AddContact(text, cnn))).watermark ("sampel-palnet-...")
46+ TextBox(cpk, fun text -> SetPage(AddContact(text, cnn))).watermark ("sampel-palnet-...")
24− TextBlock("Nickname:")
48+ TextBlock("Nickname:")
25− TextBox(cnn, fun text -> SetPage(AddContact(cpk, text)))
49+ TextBox(cnn, fun text -> SetPage(AddContact(cpk, text)))
27− Button("Save Contact", DoSaveContact).centerHorizontal ()
51+ Button("Save Contact", DoSaveContact).centerHorizontal ()
29− .margin (20.)
53+ .margin (20.)