on master help sign in
Simplify client: eliminate page-setter Msg variants, use SetPage directly
6364cb2iko
client/App.fs+6−34
@@ -72,9 +72,6 @@ module App =
72
72
73 type Msg =
73 type Msg =
74 | SetPage of Page
74 | SetPage of Page
75− | SetCompose of string
76− | SetContactPubkey of string
77− | SetContactNickname of string
78 | GenIdentity
75 | GenIdentity
79 | SetServerUrl of string
76 | SetServerUrl of string
80 | DoConnect
77 | DoConnect
@@ -89,8 +86,6 @@ module App =
89 | CopyPubKey
86 | CopyPubKey
90 | DismissError
87 | DismissError
91 | StateLoaded of StateLoadResult
88 | StateLoaded of StateLoadResult
92− | SetProfileDisplayName of string
93− | SetProfileBio of string
94 | DoPickPhoto
89 | DoPickPhoto
95 | PhotoPicked of string
90 | PhotoPicked of string
96 | DoSaveProfile
91 | DoSaveProfile
@@ -207,19 +202,6 @@ module App =
207 match msg with
202 match msg with
208 | SetPage page -> { model with Page = page }, []
203 | SetPage page -> { model with Page = page }, []
209
204
210− | SetCompose text ->
211− match model.Page with
212− | Chat(pk, _) -> { model with Page = Chat(pk, text) }, []
213− | _ -> model, []
214− | SetContactPubkey pk ->
215− match model.Page with
216− | AddContact(_, nn) -> { model with Page = AddContact(pk, nn) }, []
217− | _ -> model, []
218− | SetContactNickname nn ->
219− match model.Page with
220− | AddContact(pk, _) -> { model with Page = AddContact(pk, nn) }, []
221− | _ -> model, []
222−
223 | GenIdentity ->
205 | GenIdentity ->
224 let identity = Crypto.generateIdentity ()
206 let identity = Crypto.generateIdentity ()
225 { model with Auth = Identified(identity, Offline); Page = Settings },
207 { model with Auth = Identified(identity, Offline); Page = Settings },
@@ -310,16 +292,6 @@ module App =
310
292
311 | DismissError -> { model with Error = None }, []
293 | DismissError -> { model with Error = None }, []
312
294
313− | SetProfileDisplayName name ->
314− match model.Page with
315− | EditProfile(_, bio, photo) -> { model with Page = EditProfile(name, bio, photo) }, []
316− | _ -> model, []
317−
318− | SetProfileBio bio ->
319− match model.Page with
320− | EditProfile(name, _, photo) -> { model with Page = EditProfile(name, bio, photo) }, []
321− | _ -> model, []
322−
323 | DoPickPhoto -> model, [ CmdPickPhoto ]
295 | DoPickPhoto -> model, [ CmdPickPhoto ]
324
296
325 | PhotoPicked photo ->
297 | PhotoPicked photo ->
@@ -476,7 +448,7 @@ module App =
476 | Message -> Some(decryptEvent session.Identity.PrivKey evt.Payload)
448 | Message -> Some(decryptEvent session.Identity.PrivKey evt.Payload)
477 | UnknownEvent _ -> None)
449 | UnknownEvent _ -> None)
478
450
479− let events = results |> Array.choose (function Ok e -> Some e | _ -> None) |> Array.toList
451+ let events = results |> Array.choose Result.toOption |> Array.toList
480 let errors = results |> Array.choose (function Error e -> Some e | _ -> None) |> Array.toList
452 let errors = results |> Array.choose (function Error e -> Some e | _ -> None) |> Array.toList
481
453
482 if not ackIds.IsEmpty then
454 if not ackIds.IsEmpty then
@@ -690,7 +662,7 @@ module App =
690 .font(size = 14.)
662 .font(size = 14.)
691
663
692 HStack(spacing = 8.) {
664 HStack(spacing = 8.) {
693− Entry(compose, SetCompose)
665+ Entry(compose, fun text -> SetPage(Chat(pk, text)))
694 .placeholder("Message...")
666 .placeholder("Message...")
695
667
696 Button("Send", DoSend)
668 Button("Send", DoSend)
@@ -712,11 +684,11 @@ module App =
712 viewErrorBanner model.Error
684 viewErrorBanner model.Error
713
685
714 Label("Public Key:")
686 Label("Public Key:")
715− Entry(cpk, SetContactPubkey)
687+ Entry(cpk, fun text -> SetPage(AddContact(text, cnn)))
716 .placeholder("sampel-palnet-...")
688 .placeholder("sampel-palnet-...")
717
689
718 Label("Nickname:")
690 Label("Nickname:")
719− Entry(cnn, SetContactNickname)
691+ Entry(cnn, fun text -> SetPage(AddContact(cpk, text)))
720
692
721 Button("Save Contact", DoSaveContact)
693 Button("Save Contact", DoSaveContact)
722 .centerHorizontal()
694 .centerHorizontal()
@@ -749,11 +721,11 @@ module App =
749 Button("Change Photo", DoPickPhoto).centerHorizontal()
721 Button("Change Photo", DoPickPhoto).centerHorizontal()
750
722
751 Label("Display Name:")
723 Label("Display Name:")
752− Entry(displayName, SetProfileDisplayName)
724+ Entry(displayName, fun text -> SetPage(EditProfile(text, bio, photo)))
753 .placeholder("Your name")
725 .placeholder("Your name")
754
726
755 Label("Bio:")
727 Label("Bio:")
756− Entry(bio, SetProfileBio)
728+ Entry(bio, fun text -> SetPage(EditProfile(displayName, text, photo)))
757 .placeholder("Tell something about yourself")
729 .placeholder("Tell something about yourself")
758
730
759 Button("Save Profile", DoSaveProfile).centerHorizontal()
731 Button("Save Profile", DoSaveProfile).centerHorizontal()
client/bin/Debug/net10.0-ios/iossimulator-arm64/Skrepka.app/Skrepka.dll

Binary file not shown.

client/bin/Debug/net10.0-ios/iossimulator-arm64/Skrepka.app/Skrepka.pdb

Binary file not shown.

client/bin/Debug/net10.0-ios/iossimulator-arm64/Skrepka.app/_CodeSignature/CodeResources+4−4
@@ -166,11 +166,11 @@
166 </data>
166 </data>
167 <key>Skrepka.dll</key>
167 <key>Skrepka.dll</key>
168 <data>
168 <data>
169− q+RBTy5zY6JI9PxhrcWbfRvoL18=
169+ c9k898gnYMQdWHhdAHoE6Fz59nI=
170 </data>
170 </data>
171 <key>Skrepka.pdb</key>
171 <key>Skrepka.pdb</key>
172 <data>
172 <data>
173− NYWrt6DxlK+IUv/o6TjGg/EXk0I=
173+ LhHFBGciNjCwn3byqpt0UM3stjc=
174 </data>
174 </data>
175 <key>Sodium.Core.dll</key>
175 <key>Sodium.Core.dll</key>
176 <data>
176 <data>
@@ -1393,14 +1393,14 @@
1393 <dict>
1393 <dict>
1394 <key>hash2</key>
1394 <key>hash2</key>
1395 <data>
1395 <data>
1396− zGao9cc9uvzxMlIB65ZxAxYwkb+5koDw9sBTW54bflw=
1396+ bWxl+IGnsw/NXLyjxBqYhs+LU+FYTOCHPAoXsPEfR6w=
1397 </data>
1397 </data>
1398 </dict>
1398 </dict>
1399 <key>Skrepka.pdb</key>
1399 <key>Skrepka.pdb</key>
1400 <dict>
1400 <dict>
1401 <key>hash2</key>
1401 <key>hash2</key>
1402 <data>
1402 <data>
1403− iNV/dAt3PmF/Vbjcomf5Qozaj2oQDkDdwcsenxrta+M=
1403+ TsmGxaRiClJJVFjrmZPl9EK0DTxasYWDClFY+GEdgCw=
1404 </data>
1404 </data>
1405 </dict>
1405 </dict>
1406 <key>Sodium.Core.dll</key>
1406 <key>Sodium.Core.dll</key>
client/bin/Debug/net10.0-ios/iossimulator-arm64/Skrepka.dll

Binary file not shown.

client/bin/Debug/net10.0-ios/iossimulator-arm64/Skrepka.pdb

Binary file not shown.

client/bin/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.app/Contents/MonoBundle/Skrepka.dll

Binary file not shown.

client/bin/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.app/Contents/MonoBundle/Skrepka.pdb

Binary file not shown.

client/bin/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.app/Contents/_CodeSignature/CodeResources+2−2
@@ -251,14 +251,14 @@
251 <dict>
251 <dict>
252 <key>hash2</key>
252 <key>hash2</key>
253 <data>
253 <data>
254− siIFHcakElVsJvGoDeaziJTyMHVboq2iWuRQU4ojFSs=
254+ 65gZOa6bguKqFrbqG66bXLi5mKgH6P58g1W2RBihBN8=
255 </data>
255 </data>
256 </dict>
256 </dict>
257 <key>MonoBundle/Skrepka.pdb</key>
257 <key>MonoBundle/Skrepka.pdb</key>
258 <dict>
258 <dict>
259 <key>hash2</key>
259 <key>hash2</key>
260 <data>
260 <data>
261− oQAGpHBMs/0ySIEif7Oklne5RyNCSo42UIKWMeP3w5I=
261+ Zqn8PM92ySvTibkdxVFqryCishi0DoTg0qz8e/xc+AY=
262 </data>
262 </data>
263 </dict>
263 </dict>
264 <key>MonoBundle/Sodium.Core.dll</key>
264 <key>MonoBundle/Sodium.Core.dll</key>
client/bin/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.dll

Binary file not shown.

client/bin/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.pdb

Binary file not shown.

client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.AssemblyInfo.fs+1−1
@@ -10,7 +10,7 @@ open System.Reflection
10[<assembly: System.Reflection.AssemblyCompanyAttribute("Skrepka")>]
10[<assembly: System.Reflection.AssemblyCompanyAttribute("Skrepka")>]
11[<assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")>]
11[<assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")>]
12[<assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")>]
12[<assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")>]
13−[<assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+dddd66f0bf97c47fa53d616a7c0df16842361244")>]
13+[<assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+f4d37c22efe1c611f1e26330703855536736e15a")>]
14[<assembly: System.Reflection.AssemblyProductAttribute("Skrepka")>]
14[<assembly: System.Reflection.AssemblyProductAttribute("Skrepka")>]
15[<assembly: System.Reflection.AssemblyTitleAttribute("Skrepka")>]
15[<assembly: System.Reflection.AssemblyTitleAttribute("Skrepka")>]
16[<assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")>]
16[<assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")>]
client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.AssemblyInfoInputs.cache+1−1
@@ -1 +1 @@
1−76de582629b12d03b2d9bbd1d57cf53dfb188fbf4e6496f51ba6519a0f83d3b2
1+5c7a8aee9ac955a94dfa896b7bc128b149d464c9238bf5df93509d4192198883
client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.dll

Binary file not shown.

client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.fsproj.FileListAbsolute.txt+23
@@ -334,3 +334,26 @@
334/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.genruntimeconfig.cache
334/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.genruntimeconfig.cache
335/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/ref/Skrepka.dll
335/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/ref/Skrepka.dll
336/Users/iko/Developer/skrepka/client/bin/Debug/net10.0-ios/iossimulator-arm64/LiteDB.dll
336/Users/iko/Developer/skrepka/client/bin/Debug/net10.0-ios/iossimulator-arm64/LiteDB.dll
337+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Fabulous.stamp
338+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Fabulous.MauiControls.stamp
339+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/FSharp.Core.stamp
340+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/LiteDB.stamp
341+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Configuration.Abstractions.stamp
342+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Configuration.stamp
343+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.DependencyInjection.Abstractions.stamp
344+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.DependencyInjection.stamp
345+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Diagnostics.Abstractions.stamp
346+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.FileProviders.Abstractions.stamp
347+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Hosting.Abstractions.stamp
348+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Logging.Abstractions.stamp
349+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Logging.stamp
350+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Options.stamp
351+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Extensions.Primitives.stamp
352+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Maui.Controls.Compatibility.stamp
353+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Maui.Controls.stamp
354+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Maui.Controls.Xaml.stamp
355+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Maui.stamp
356+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Maui.Essentials.stamp
357+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Microsoft.Maui.Graphics.stamp
358+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/resourcestamps/Sodium.Core.stamp
359+/Users/iko/Developer/skrepka/client/obj/Debug/net10.0-ios/iossimulator-arm64/unpack/Microsoft.Maui.Essentials/BundleResource/xml/microsoft_maui_essentials_fileprovider_file_paths.xml
client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.pdb

Binary file not shown.

client/obj/Debug/net10.0-ios/iossimulator-arm64/Skrepka.sourcelink.json+1−1
@@ -1 +1 @@
1−{"documents":{"/Users/iko/Developer/skrepka/*":"https://raw.githubusercontent.com/ilyakooo0/skrepka/dddd66f0bf97c47fa53d616a7c0df16842361244/*"}}
1+{"documents":{"/Users/iko/Developer/skrepka/*":"https://raw.githubusercontent.com/ilyakooo0/skrepka/f4d37c22efe1c611f1e26330703855536736e15a/*"}}
client/obj/Debug/net10.0-ios/iossimulator-arm64/ref/Skrepka.dll

Binary file not shown.

client/obj/Debug/net10.0-ios/iossimulator-arm64/refint/Skrepka.dll

Binary file not shown.

client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.AssemblyInfo.fs+1−1
@@ -10,7 +10,7 @@ open System.Reflection
10[<assembly: System.Reflection.AssemblyCompanyAttribute("Skrepka")>]
10[<assembly: System.Reflection.AssemblyCompanyAttribute("Skrepka")>]
11[<assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")>]
11[<assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")>]
12[<assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")>]
12[<assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")>]
13−[<assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+dddd66f0bf97c47fa53d616a7c0df16842361244")>]
13+[<assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0+f4d37c22efe1c611f1e26330703855536736e15a")>]
14[<assembly: System.Reflection.AssemblyProductAttribute("Skrepka")>]
14[<assembly: System.Reflection.AssemblyProductAttribute("Skrepka")>]
15[<assembly: System.Reflection.AssemblyTitleAttribute("Skrepka")>]
15[<assembly: System.Reflection.AssemblyTitleAttribute("Skrepka")>]
16[<assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")>]
16[<assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")>]
client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.AssemblyInfoInputs.cache+1−1
@@ -1 +1 @@
1−0ee050de77dfa27f84bf6e8bcff1935f31e0cbcc80fd35a7cd647eb5ffb919b9
1+12a7098dd6f75a7def1e52aafae4a8374e44122db6ad234a65ee12077bf114e2
client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.dll

Binary file not shown.

client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.pdb

Binary file not shown.

client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/Skrepka.sourcelink.json+1−1
@@ -1 +1 @@
1−{"documents":{"/Users/iko/Developer/skrepka/*":"https://raw.githubusercontent.com/ilyakooo0/skrepka/dddd66f0bf97c47fa53d616a7c0df16842361244/*"}}
1+{"documents":{"/Users/iko/Developer/skrepka/*":"https://raw.githubusercontent.com/ilyakooo0/skrepka/f4d37c22efe1c611f1e26330703855536736e15a/*"}}
client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/ref/Skrepka.dll

Binary file not shown.

client/obj/Debug/net10.0-maccatalyst/maccatalyst-arm64/refint/Skrepka.dll

Binary file not shown.

server.knot+1−1
@@ -956,7 +956,7 @@ serve = \req -> case req of
956 let trustedDeduped = do
956 let trustedDeduped = do
957 e <- deduped
957 e <- deduped
958 where e.server == fromServer || any presence (\p -> p.server == e.server && p.expiresAt > t)
958 where e.server == fromServer || any presence (\p -> p.server == e.server && p.expiresAt > t)
959− yield e
959+ yield {expiresAt: e.expiresAt, pubkey: e.pubkey, server: e.server, timestamp: e.timestamp}
960 let appliedOnline = do
960 let appliedOnline = do
961 e <- trustedDeduped
961 e <- trustedDeduped
962 where none presence (\p -> samePubkeyServer p e && p.expiresAt >= e.expiresAt)
962 where none presence (\p -> samePubkeyServer p e && p.expiresAt >= e.expiresAt)