Skip to content

Commit e752b5a

Browse files
authored
Merge pull request #1175 from darcszn/fix/1056-1057-1079-ci-docker-keyboard
fix: resolve issues #1056, #1057, and #1079
2 parents e637abd + d54f236 commit e752b5a

2 files changed

Lines changed: 51 additions & 24 deletions

File tree

.github/workflows/ci.yml

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ jobs:
2424
run: pnpm run lint
2525
- name: Build
2626
run: pnpm run build
27+
- name: Upload build artifact
28+
uses: actions/upload-artifact@v4
29+
with:
30+
name: next-build-${{ github.sha }}
31+
path: .next/
32+
if-no-files-found: error
2733

2834
migration-health:
2935
runs-on: ubuntu-latest
@@ -94,8 +100,11 @@ jobs:
94100
cache: 'pnpm'
95101
- name: Install dependencies
96102
run: pnpm install
97-
- name: Build
98-
run: pnpm run build
103+
- name: Download build artifact
104+
uses: actions/download-artifact@v4
105+
with:
106+
name: next-build-${{ github.sha }}
107+
path: .next/
99108
- name: Run Lighthouse CI
100109
run: |
101110
pnpm exec lhci autorun
@@ -177,3 +186,27 @@ jobs:
177186
echo "Image exceeds 300MB limit"
178187
exit 1
179188
fi
189+
- name: Verify container starts and responds
190+
run: |
191+
docker run -d \
192+
--name smoke-test \
193+
-p 3000:3000 \
194+
-e NODE_ENV=production \
195+
stellar-creator-portfolio:${{ github.sha }}
196+
197+
echo "Waiting for container to become ready..."
198+
for i in $(seq 1 30); do
199+
if curl -sf http://localhost:3000/api/health > /dev/null 2>&1; then
200+
echo "Container is healthy after ${i}s"
201+
break
202+
fi
203+
if [ "$i" -eq 30 ]; then
204+
echo "Container did not become ready within 30 seconds"
205+
docker logs smoke-test
206+
docker rm -f smoke-test
207+
exit 1
208+
fi
209+
sleep 1
210+
done
211+
212+
docker rm -f smoke-test
Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
/**
22
* Keyboard Avoiding View Component
3-
* Automatically adjusts view position when keyboard appears
3+
* Automatically adjusts view position when keyboard appears.
4+
*
5+
* Uses the `useKeyboardAvoidance` hook's animated translateY exclusively.
6+
* The native KeyboardAvoidingView has been intentionally removed to avoid
7+
* double-compensation on iOS (both mechanisms react to the same keyboard
8+
* event and would shift content up by ~2× the keyboard height).
49
*/
510

611
import React, { useMemo } from 'react';
712
import {
813
Animated,
9-
View,
1014
ViewProps,
1115
StyleSheet,
12-
Platform,
13-
KeyboardAvoidingView,
1416
} from 'react-native';
1517
import { useKeyboardAvoidance } from '../../hooks/useKeyboardAvoidance';
1618

@@ -25,7 +27,7 @@ export const KeyboardAvoidingContainer: React.FC<KeyboardAvoidingContainerProps>
2527
style,
2628
...props
2729
}) => {
28-
const { animatedValue, isVisible } = useKeyboardAvoidance();
30+
const { animatedValue } = useKeyboardAvoidance();
2931

3032
const animatedStyle = useMemo(
3133
() => ({
@@ -35,29 +37,21 @@ export const KeyboardAvoidingContainer: React.FC<KeyboardAvoidingContainerProps>
3537
);
3638

3739
return (
38-
<KeyboardAvoidingView
39-
behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
40-
style={styles.container}
40+
<Animated.View
41+
style={[
42+
styles.container,
43+
animatedStyle,
44+
style,
45+
]}
46+
{...props}
4147
>
42-
<Animated.View
43-
style={[
44-
styles.content,
45-
animatedStyle,
46-
style,
47-
]}
48-
{...props}
49-
>
50-
{children}
51-
</Animated.View>
52-
</KeyboardAvoidingView>
48+
{children}
49+
</Animated.View>
5350
);
5451
};
5552

5653
const styles = StyleSheet.create({
5754
container: {
5855
flex: 1,
5956
},
60-
content: {
61-
flex: 1,
62-
},
6357
});

0 commit comments

Comments
 (0)