Skip to content

Commit 2d33cd1

Browse files
committed
Merge branch 'tlg/web' into 'develop'
RN Web Build See merge request polycentric/polycentric!480
2 parents 2857c35 + 151a91a commit 2d33cd1

128 files changed

Lines changed: 2463 additions & 3099 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cirrus.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ build_ios_sim_arm64_task:
2222
- cd packages/rs-core
2323
- brew install just protobuf llvm
2424
- just build-ffi-ios-sim
25-
- cp ../../target/aarch64-apple-ios/release/libpolycentric_core.a ../../libpolycentric_core-ios-sim-arm64.a
25+
- cp ../../target/aarch64-apple-ios-sim/release/libpolycentric_core.a ../../libpolycentric_core-ios-sim-arm64.a
2626
binary_artifacts:
2727
path: 'libpolycentric_core-ios-sim-arm64.a'
2828

.gitlab/ci/build_rs_core.yml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -144,18 +144,6 @@ rs-sdk-build-ios-sim-arm64:
144144
paths:
145145
- buildRsCoreIOSSimArm64/binary/*.a
146146

147-
rs-sdk-build-ios-sim-x86_64:
148-
stage: build
149-
extends: .rs-sdk-ios-build
150-
script:
151-
- |
152-
cirrus run buildRsCoreIOSSimX86 \
153-
--artifacts-dir . \
154-
--env-file .cienv
155-
artifacts:
156-
paths:
157-
- buildRsCoreIOSSimX86/binary/*.a
158-
159147
rs-sdk-build-android-arm64:
160148
extends: .rs-sdk-build-android
161149
script:
@@ -203,8 +191,6 @@ rs-sdk-publish:
203191
artifacts: true
204192
- job: rs-sdk-build-ios-sim-arm64
205193
artifacts: true
206-
- job: rs-sdk-build-ios-sim-x86_64
207-
artifacts: true
208194
- job: rs-sdk-build-android-arm64
209195
artifacts: true
210196
- job: rs-sdk-build-android-armv7
@@ -219,7 +205,6 @@ rs-sdk-publish:
219205
REGISTRY_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/rs-core/${VERSION}"
220206
curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ../../buildRsCoreIOSDevice/binary/libpolycentric_core-ios-device.a "${REGISTRY_URL}/libpolycentric_core-ios-device.a"
221207
curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ../../buildRsCoreIOSSimArm64/binary/libpolycentric_core-ios-sim-arm64.a "${REGISTRY_URL}/libpolycentric_core-ios-sim-arm64.a"
222-
curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ../../buildRsCoreIOSSimX86/binary/libpolycentric_core-ios-sim-x86_64.a "${REGISTRY_URL}/libpolycentric_core-ios-sim-x86_64.a"
223208
curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ../../target/aarch64-linux-android/release/libpolycentric_core.a "${REGISTRY_URL}/libpolycentric_core-android-arm64.a"
224209
curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ../../target/armv7-linux-androideabi/release/libpolycentric_core.a "${REGISTRY_URL}/libpolycentric_core-android-armv7.a"
225210
curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ../../target/i686-linux-android/release/libpolycentric_core.a "${REGISTRY_URL}/libpolycentric_core-android-x86.a"

.prettierignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ packages/react-native/android
1313
packages/react-native/ios
1414
packages/react-native/lib
1515
packages/rs-core
16+
packages/rs-core-wasm-browser
17+
packages/rs-core-wasm-node
1618
legacy
1719
services/polycentric-server
18-
services/verifiers-server
20+
services/verifiers-server

apps/polycentric/app.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
"orientation": "portrait",
77
"icon": "./assets/images/AppIcon.png",
88
"scheme": "polycentric",
9+
"web": {
10+
"output": "static"
11+
},
912
"userInterfaceStyle": "automatic",
1013
"ios": {
1114
"supportsTablet": true,

apps/polycentric/app/(tabs)/feed/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default function Feed() {
3131
const { Sheet, present, dismiss } = useSheet();
3232

3333
const [selectedFeed, setSelectedFeed] = useState<FeedType>('explore');
34-
const [replyToEvent, setReplyToEvent] = useState<types.ISignedEvent | null>(
34+
const [replyToEvent, setReplyToEvent] = useState<types.SignedEvent | null>(
3535
null,
3636
);
3737

@@ -48,7 +48,7 @@ export default function Feed() {
4848
[router],
4949
);
5050

51-
const handleAuthorPress = (publicKey: types.IPublicKey) => {
51+
const handleAuthorPress = (publicKey: types.PublicKey) => {
5252
router.push(Routes.profile(publicKeyToStringURLSafe(publicKey)));
5353
};
5454

@@ -65,7 +65,7 @@ export default function Feed() {
6565
);
6666

6767
const handleReply = useCallback(
68-
(signedEvent: types.ISignedEvent) => {
68+
(signedEvent: types.SignedEvent) => {
6969
setReplyToEvent(signedEvent);
7070
present();
7171
},
@@ -147,7 +147,7 @@ export default function Feed() {
147147
onPress={handleFabPress}
148148
icon={() => <Ionicons name="add-circle" size={22} color="white" />}
149149
/>
150-
<Sheet detents={[1]} scrollable>
150+
<Sheet detents={[0.82]}>
151151
<ComposeSheetInner
152152
dismiss={dismiss}
153153
onPostCreated={handlePostCreated}

apps/polycentric/app/(tabs)/feed/post/[postId].tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export default function PostScreen() {
2020
const { postId } = useLocalSearchParams<{ postId: string }>();
2121
const { Sheet, present, dismiss } = useSheet();
2222

23-
const [replyToEvent, setReplyToEvent] = useState<types.ISignedEvent | null>(
23+
const [replyToEvent, setReplyToEvent] = useState<types.SignedEvent | null>(
2424
null,
2525
);
2626

@@ -33,14 +33,14 @@ export default function PostScreen() {
3333
);
3434

3535
const handleAuthorPress = useCallback(
36-
(publicKey: types.IPublicKey) => {
36+
(publicKey: types.PublicKey) => {
3737
router.replace(Routes.profile(publicKeyToStringURLSafe(publicKey)));
3838
},
3939
[router],
4040
);
4141

4242
const handleReply = useCallback(
43-
(se: types.ISignedEvent) => {
43+
(se: types.SignedEvent) => {
4444
setReplyToEvent(se);
4545
present();
4646
},
@@ -84,7 +84,7 @@ export default function PostScreen() {
8484
onReply={handleReply}
8585
/>
8686
</Box>
87-
<Sheet detents={[1]} scrollable>
87+
<Sheet detents={[0.82]}>
8888
<ComposeSheetInner
8989
dismiss={dismiss}
9090
onPostCreated={handlePostCreated}

apps/polycentric/app/(tabs)/feed/profile/[publicKey].tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default function Profile() {
4242
);
4343

4444
const handleAuthorPress = useCallback(
45-
(pk: types.IPublicKey) => {
45+
(pk: types.PublicKey) => {
4646
router.replace(Routes.profile(publicKeyToStringURLSafe(pk)));
4747
},
4848
[router],

apps/polycentric/app/(tabs)/settings/index.tsx

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState, useCallback, useEffect } from 'react';
2-
import { ScrollView, Linking, Alert, ActivityIndicator } from 'react-native';
2+
import { ScrollView, Linking, ActivityIndicator } from 'react-native';
33
import { Ionicons } from '@expo/vector-icons';
44
import {
55
Screen,
@@ -28,6 +28,7 @@ import {
2828
import { types } from '@polycentric/react-native';
2929
import { useTheme } from '@/theme';
3030
import { TAB_BAR_HEIGHT, SOURCE_CODE_URL, REPORT_BUG_URL } from '@/constants';
31+
import { confirm } from '@/lib/dialogs/alert';
3132

3233
export default function Settings() {
3334
const { theme } = useTheme();
@@ -82,7 +83,7 @@ export default function Settings() {
8283
function IdentitySettingsContent({
8384
publicKey,
8485
}: {
85-
publicKey: types.IPublicKey;
86+
publicKey: types.PublicKey;
8687
}) {
8788
const { theme } = useTheme();
8889
const client = usePolycentric();
@@ -93,11 +94,37 @@ function IdentitySettingsContent({
9394
const [editing, setEditing] = useState(false);
9495
const [nameDraft, setNameDraft] = useState('');
9596
const [saving, setSaving] = useState(false);
97+
const [eventCount, setEventCount] = useState(0);
9698

9799
useEffect(() => {
98100
setNameDraft(username);
99101
}, [username]);
100102

103+
useEffect(() => {
104+
let cancelled = false;
105+
106+
client.storage.processStates
107+
.getCurrentLogicalClock(
108+
client.currentIdentity.keyPair.keyType,
109+
client.currentIdentity.keyPair.publicKey.key,
110+
client.process.process,
111+
)
112+
.then((logicalClock) => {
113+
if (!cancelled) {
114+
setEventCount(Number(logicalClock));
115+
}
116+
})
117+
.catch(() => {
118+
if (!cancelled) {
119+
setEventCount(0);
120+
}
121+
});
122+
123+
return () => {
124+
cancelled = true;
125+
};
126+
}, [client, identity]);
127+
101128
const handleSave = useCallback(async () => {
102129
setSaving(true);
103130
try {
@@ -125,7 +152,6 @@ function IdentitySettingsContent({
125152
)
126153
: '';
127154
const displayName = username;
128-
const eventCount = Math.max(0, client.logicalClock - 1);
129155
const avatarUrl = identiconUrl(publicKey, 160);
130156

131157
return (
@@ -261,27 +287,24 @@ function ServersSheetContent() {
261287
}
262288
};
263289

264-
const handleRemoveServer = (server: string) => {
265-
Alert.alert('Remove Server', `Remove ${server}?`, [
266-
{ text: 'Cancel', style: 'cancel' },
267-
{
268-
text: 'Remove',
269-
style: 'destructive',
270-
onPress: async () => {
271-
setIsBusy(true);
272-
try {
273-
await client.contentManager.createRemoveServer(server);
274-
refreshServers();
275-
store.getState().clearFeed('explore');
276-
client.sync().catch(() => {});
277-
} catch (err) {
278-
console.error('Failed to remove server:', err);
279-
} finally {
280-
setIsBusy(false);
281-
}
282-
},
283-
},
284-
]);
290+
const handleRemoveServer = async (server: string) => {
291+
const ok = await confirm({
292+
title: 'Remove Server',
293+
message: `Remove ${server}?`,
294+
confirmText: 'Remove',
295+
});
296+
if (!ok) return;
297+
setIsBusy(true);
298+
try {
299+
await client.contentManager.createRemoveServer(server);
300+
refreshServers();
301+
store.getState().clearFeed('explore');
302+
client.sync().catch(() => {});
303+
} catch (err) {
304+
console.error('Failed to remove server:', err);
305+
} finally {
306+
setIsBusy(false);
307+
}
285308
};
286309

287310
return (

0 commit comments

Comments
 (0)