Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keyboard Flickering on TextInput with secureTextEntry #39411

Closed
gcon97 opened this issue Sep 12, 2023 · 70 comments
Closed

Keyboard Flickering on TextInput with secureTextEntry #39411

gcon97 opened this issue Sep 12, 2023 · 70 comments
Labels
API: Keyboard Component: TextInput Related to the TextInput component. Issue: Author Provided Repro This issue can be reproduced in Snack or an attached project. Needs: Triage 🔍

Comments

@gcon97
Copy link

gcon97 commented Sep 12, 2023

Description

If you have 2 text inputs, (One with secure text entry enabled and the other set to disabled), When typing, highlighting and scrolling in the non-secure text entry, the keyboard will flicker.
This is an iOS issue only, I have tested this using iOS 17, on an iPhone 13 mini. I cannot repeat this issue in the simulator, only on the device.

It appears to be when iOS recognizes it as a login field, so it presents the auto-fill passwords UI. See the attached video on the flickering issue described.

RPReplay_Final1694522683.mov

React Native Version

0.72.4

Output of npx react-native info

System:
OS: macOS 13.4.1
CPU: (10) arm64 Apple M1 Pro
Memory: 115.16 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 20.3.1
path: /opt/homebrew/bin/node
Yarn:
version: 1.22.19
path: /usr/local/bin/yarn
npm:
version: 9.6.7
path: /opt/homebrew/bin/npm
Watchman:
version: 2023.06.12.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.11.3
path: /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 22.4
- iOS 16.4
- macOS 13.3
- tvOS 16.4
- watchOS 9.4
Android SDK:
API Levels:
- "28"
- "31"
- "32"
- "33"
Build Tools:
- 30.0.2
- 30.0.3
- 32.0.0
- 33.0.0
- 34.0.0
System Images:
- android-30 | Google Play ARM 64 v8a
- android-33 | Google APIs ARM 64 v8a
- android-33 | Google Play ARM 64 v8a
- android-34 | Google APIs ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9619390
Xcode:
version: 14.3.1/14E300b
path: /usr/bin/xcodebuild
Languages:
Java:
version: 18.0.1.1
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.72.4
wanted: 0.72.4
react-native-macos: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false

Steps to reproduce

Have 2 TextInput components inside a view, one set with secureTextEntry, one without.

This issue is only seen on device, not in simulator

Snack, screenshot, or link to a repository

https://github.com/gcon97/KeyboardFlickeringDemo

@github-actions github-actions bot added API: Keyboard Component: TextInput Related to the TextInput component. labels Sep 12, 2023
@cortinico cortinico added the Issue: Author Provided Repro This issue can be reproduced in Snack or an attached project. label Sep 14, 2023
@tianlinjill
Copy link

I also encountered the similar issue when in login screen

@ShadReyes
Copy link

ShadReyes commented Sep 19, 2023

I am experiencing the same on login screens. It's a newer issue. It seems to be caused by the suggested autofill.

The problem is reduce by using default value prop passed to TextInput component that holds its own text ref and passes out ref value on change.

@ShadReyes
Copy link

ShadReyes commented Sep 19, 2023

I figured out the problem

It appears to be that at some point recently (pre iOS 17) a bug was introduced. Whenever secureTextEntry={false} and textContentType is set, various Text Input changes (typing, focus, etc...) will fire a native keyboardWillChangeFrame event that causes the keyboard to re-render. This also causes iOS's AutoFill QuickType Bar (forgive me if my terminology is incorrect) to flicker.

This can be especially problematic for any RN apps using KeyboardAvoidingView with iOS behavior={'position'} since it will cause a layout flicker as it adjusts to the disappearing and reappearing AutoFill QuickType Bar.

You can actually see the issue in native iOS apps:

  1. Go to the login screen of a native iOS app.
  2. Change focus from username and password fields.
  3. In many apps you can see a slight bounce as the keyboard animations handle the AutoFill QuickType Bar flicker.

For those who are using KeyboardAvoidingView (RN V0.72.* Patch Fix)

For those who are wrapping their text inputs in a <KeyboardAvoidingView behavior= 'position'}> and <ScrollView>, you are likely dealing with your screen jumping on text change and focus change.

This isn't a pretty solution (and keep in mind it does not fix the root issue of the keyboard re-render), but you can do the following **TEMPORARY and NOT fully tested** fix for this issue:

  1. Go to the file at: node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js
  2. Add ignoreIOSKeyboardWillChangeEvents?: boolean | undefined; to the KeyboardAvoidingView props.
  3. Go to the types file at: node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts
  4. Add ignoreIOSKeyboardWillChangeEvents?: boolean | undefined; to the KeyboardAvoidingView props.
  5. Replace the const {duration, easing, endCoordinates} = this._keyboardEvent; line with the following:
const {duration, easing, endCoordinates} = this._keyboardEvent;

if(Platform.OS === 'ios' && duration === 0 && !!this.props.ignoreIOSKeyboardWillChangeEvents ) {
      return;
}
  1. Use patch package to save the changes.

be sure to set ignoreIOSKeyboardWillChangeEvents={true} with care. I, for example, am only using it on a login screen for a very specific keyboard avoiding use case scenario that I detail above. Hope this helps.

@ThorANilsson
Copy link

ThorANilsson commented Oct 3, 2023

RPReplay-Final1696326197.mov

I began seeing this after updating the device i test on (iPhone 14 Pro) to iOS 17. Using Expo Go. Very annoying...

What's interesting is that I am not experiencing this on another iPhone 11 Pro Max, also running iOS 17.

@ThorANilsson
Copy link

I believe this is caused by the "Passwords"-thing (see attached image) that appears on iOS when the OS believes you want to use a password from your keychain.

When I test on a phone that does not have a keychain, there is no jumping or flickering.
IMG-4401

@gcon97
Copy link
Author

gcon97 commented Oct 3, 2023

I can confirm that it is an issue with the Passwords option in the Keyboard toolbar. Seems to be an issue across iOS 17 rather than a ReactNative issue. (It also isn't fixed in iOS 17.1, so we may be waiting a while for a fix).

Closing as it isn't a React Native-specific issue.

@gcon97 gcon97 closed this as not planned Won't fix, can't repro, duplicate, stale Oct 3, 2023
@ThorANilsson
Copy link

ThorANilsson commented Oct 4, 2023

Adding textContentType='oneTimeCode' to your TextInput disables the Password toolbar, which also eliminates the described issue.

@Shubham0850
Copy link

@ThorANilsson I tried this, but it's not working for me.

@mkhoussid
Copy link

mkhoussid commented Oct 12, 2023

Here's what I did.

TL;DR: If it's a password field, on each change update the actual string value in a map, and then render the value as bullets ('•'). What we're essentially doing here is saying that all of our fields are just regular fields without autofill, but we can manipulate the value of the field, if it's a password field, if we pass a certain flag.

Somewhere created a file called maskMap.ts with the following:

export const maskMap = new Map<string, string>();

And in your custom TextField component (I'm assuming most of you have wrapped TextInput into one of your own TextField components):

import * as React from 'react';
import { TextInput } from 'react-native-paper';
import { maskMap } from './maskMap';

const PASSWORD_MASK_CHAR = '•';
. . .
// secureTextEntry determines whether or not this is a password field
const TextField = React.memo(({ onChange, secureTextEntry, ...props }: YourTextFieldProps) => {
  const [textFieldId] = React.useState(uuid()); // use whatever uuid generator you'd like
. . .
  React.useEffect(() => {
	  maskMap.set(textFieldId, '');

	  return () => {
		  maskMap.delete(textFieldId);
	  };
  }, [secureTextEntry]);

  const handleChange = React.useCallback((e: string) => {
	  if (secureTextEntry) {
		  const previousValue = maskMap.get(textFieldId) as string;
		  const formattedNewValue = e.replace(new RegExp(PASSWORD_MASK_CHAR, 'g'), '');

		  const newValue = previousValue + formattedNewValue;
		  onChange(newValue);
		  maskMap.set(textFieldId, previousValue + formattedNewValue);
	  } else {
		  onChange(e);
	  }
  }, [secureTextEntry]);

  const getValue = React.useCallback(() => {
	  if (!secureTextEntry) {
		  return value;
	  }

	  return value.replaceAll(/./g, PASSWORD_MASK_CHAR);
  }, [value, secureTextEntry, showText, maskMap]);
. . .

    return (
        . . .
            <TextInput
                value={getValue()}
                onChangeText={handleChange}
                textContentType='none' // add this
                . . .
            />
        . . .
    )
})

@Engazan
Copy link

Engazan commented Nov 17, 2023

how this can be closed if its still happening ?

it happends all the time when you have textContentType="password" or secureTextEntry

@ShadReyes
Copy link

@Engazan It's closed because it's an iOS bug. iOS started over-triggering keyboardWillChangeFrame events every time the input changes when the arguments you specified are implemented. We can't ignore this event because it's relied on for many component designs and reactivity. So, sadly we have to put in temporary patch fixes until Apple fixes it on their side.

@noahkurz
Copy link

noahkurz commented Nov 18, 2023

Adding textContentType='oneTimeCode' to your TextInput disables the Password toolbar, which also eliminates the described issue.

This works! Thank you!! Just saved my weekend lol

@chimiWangchukWangdi
Copy link

Any updates

@nguyenhuynhdeveloper
Copy link

I have found the solution. The error is caused by props value , you can hide the value and handle the logic with ref
Screenshot 2024-01-02 at 16 19 22
Uploading Screenshot 2024-01-02 at 16.19.22.png…

@nnphong1904
Copy link

Hi everyone, is there any update on this?

@xydian
Copy link

xydian commented Jan 25, 2024

Also happening on my side :) Seems to be an issue in flutter, too flutter/flutter#134723

@FemtDeveloper
Copy link

I have problem also in android,, can somebody helpme?

WhatsApp.Video.2024-02-06.at.03.17.54.mp4

@ugar0ff
Copy link

ugar0ff commented Feb 7, 2024

How to hide the "password" panel on the keyboard when we use secureTextEntry?

@RodrigueHunel
Copy link

Agree the issue should not be closed. These are all workarounds to a real issue, and doesn't seem like there are any other open issues in this repo that are directly related?

If there are, would be good to link here.

flutter/flutter#134723

@vitorbarros
Copy link

It should not be closed!

@irekrog
Copy link

irekrog commented Aug 30, 2024

It works even worse on iOS 18 (beta 8) 😕

@picardplaisimond
Copy link

picardplaisimond commented Sep 2, 2024

Are we the only persons in the world with this issue ? I don't understand why this flickering is not coming up on other apps? And why the simulator doesn't show the flickering ? iOS 17 is widely used right now. Can't ignore this.

@zhenkaGo
Copy link

zhenkaGo commented Sep 4, 2024

Try adding autoCorrect={false} to TextInput

@jsommer001
Copy link

Hate the .textContentType(.oneTimeCode) "fix".

Any update?

@Bialson
Copy link

Bialson commented Sep 11, 2024

I sometimes observe that problem in other apps so I guess there is something wrong with iOS. Hope iOS 18 will resolve the problems.

@irekrog
Copy link

irekrog commented Sep 11, 2024

I sometimes observe that problem in other apps so I guess there is something wrong with iOS. Hope iOS 18 will resolve the problems.

I'm not sure #39411 (comment)

seungholee-dev added a commit to team-diverse/dife-frontend that referenced this issue Sep 25, 2024
개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component
seungholee-dev added a commit to team-diverse/dife-frontend that referenced this issue Sep 25, 2024
개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component
@artiemez
Copy link

artiemez commented Oct 1, 2024

Try adding autoCorrect={false} to TextInput

Thanks! Helped in my case - I have email textInput with autoComplete set to username. Flickering is gone 👍

seungholee-dev added a commit to team-diverse/dife-frontend that referenced this issue Oct 1, 2024
개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component
seungholee-dev added a commit to team-diverse/dife-frontend that referenced this issue Oct 1, 2024
개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component
@verrannt
Copy link

verrannt commented Oct 1, 2024

Thanks! Helped in my case - I have email textInput with autoComplete set to username. Flickering is gone 👍

@artiemez Would you mind pasting your TextInput code? I still have the flickering, no matter what I try for autoComplete or autoCorrect.

(Testing on iPhone 13 Pro with iOS 18)

@artiemez
Copy link

artiemez commented Oct 1, 2024

Thanks! Helped in my case - I have email textInput with autoComplete set to username. Flickering is gone 👍

@artiemez Would you mind pasting your TextInput code? I still have the flickering, no matter what I try for autoComplete or autoCorrect.

(Testing on iPhone 13 Pro with iOS 18)

                <Input
                    size="lg"
                    className="text-center"
                    label="email address"
                    enterKeyHint="next"
                    onSubmitEditing={handleSubmit}
                    placeholder="email address"
                    autoCapitalize="none"
                    autoComplete="username"
                    keyboardType="email-address"
                    autoCorrect={false}
                    showClearButton
                    {...field}
                />

{...field} is react hook form controller props

nnyouung added a commit to team-diverse/dife-frontend that referenced this issue Oct 2, 2024
* Feat/chat updates: 채팅 검색 후 뒤로가기, 채팅 및 북마크 번역 연결, 채팅방 모달, 채팅방 ui/ux 관련 업데이트 (#131)

* feat: 채팅 검색 기능 연결 및 검색 후 뒤로가기 기능 추가

수정사항
- api.js
  - 채팅 검색 api 연결
- ChattingPage.jsx, ChattingStyles.jsx
  - 채팅 검색 백엔드 연결
  - 검색 후 뒤로 가기 기능 추가

* feat: 채팅 세션 번역 라이브러리 적용

수정사항
- Bookmark.jsx, ChatInputSend.jsx, ModalNoBookmark.jsx, BookmarkPage.jsx, ChatRoomPage.jsx, ChattingPage.jsx, FriendListPage.jsx
  - 채팅 세션 번역 라이브러리 적용
  - 기본값 삭제
- src/translations/
  - 채팅 세션 번역 파일

* feat: 같은 사용자로부터 연속된 메시지에서 첫 번째 프로필 메시지 이후 들여쓰기 추가

* feat: 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현

수정사항
- api.js
  - 북마크 생성 백엔드 연결
- IconModalBookmark.jsx, IconModalCopy.jsx, src/components/chat/svg/
  - 모달에서 사용할 아이콘 제작
- ChatBubble.jsx, ModalMenuChat.jsx, ChatRoomPage.jsx
  - 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현
  - 북마크 기능을 위해 chatId 및 chatroomId 전달
- package.json, package-lock.json
  - 복사 기능을 위해 expo-clipboard 라이브러리 설치

* feat: 채팅 북마크 조회 및 번역 api 연결

수정사항
- api.js, BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - api 변수명 변경 및 변경에 따른 수정
- Bookmark.jsx, BookmarkPage.jsx
  - 채팅 북마크 조회 api 연결
  - 채팅 북마크 번역 api 연결

* feat: 채팅 번역 api 연결
- api.js
  - 채팅 번역 api 연결
- ChatBubble.jsx
  - 채팅 번역 api 연결 및 번역하기 기능 추가
  - 길게 눌렀을 때 진동 추가
- package.json, package-lock.json
  - 진동 기능을 위해 Expo Haptics 라이브러리 설치
- ModalMenuChat.jsx
  - 모달 위치 수정

* fix: 채팅 목록에서 닉네임이 안 보이던 문제 및 검색 시 키보드가 안 내려가는 문제 해결

* Fix/connect issues: 커넥트 페이지 문제 해결 (#132)

* style: 커넥트 요청 시 홈 화면 뒷면 문구 및 버튼 문구 변경

수정사항
- HomeCardBack.jsx
  - 커넥트 요청 시 문구를 '커넥트 요청하였습니다'로 변경
  - 커넥트 요청 시 버튼 문구를 ‘뒤로가기로 변경
- HomecardBackBtn.js
  - 조건문을 번역 라이브러리와 호환되도록 수정
- src/translations
  - 요청 완료 문구 추가

* fix: 커넥트 목록 페이지에서 목록 깜박거림 문제 수정

수정사항
- FriendListPage.jsx, RequestConnectListPage.jsx
  - 깜박거림 문제를 해결하기 위해 useEffect + 의존성 배열을 useFocusEffect + useCallback으로 변경

* Feat/password reset and landing update: 비밀번호 재설정 페이지 구현, 랜딩페이지 문구 및 이미지 교체 (#133)

* feat: 비밀번호 재설정 페이지 수정 및 구현

수정사항
- App.jsx
  - 비밀번호 재설정 페이지를 앱 내에 등록
- api.js
  - 비밀번호 재설정 api 연결
- LoginPage.js
  - 임시로 삭제했던 '비밀번호를 까먹었어요' 문구 복원
- FindPasswordPage.js, FindPasswordStyles.js, SetPasswordPage.jsx, SetPasswordStyles.jsx
  - 비밀번호 재설정 페이지 및 스타일 구현
- src/translations/
  - 비밀번호 재설정 페이지 번역 문구 추가

* style: 랜딩페이지 문구 및 이미지 교체

수정사항
- LandingPage.jsx, landing_chat.png, landing_community.png, landing_connect.png
  - 화질 개선된 이미지로 교체
- en.json, es.json
  - 긴 문구를 짧은 문구로 변경

* Fix/multiple improvements 2: 꿀팁게시판 json명, 댓글 익명을 기본으로 변경, 프로필 수정 페이지 한줄소개, 홈 카드 채팅 연결, 알림 관련 문제 해결 (#134)

* fix: 꿀팁게시판 json명 변경 및 댓글 익명을 기본으로 변경

수정사항
- PostPage.jsx
  - 댓글 입력창의 익명 여부를 기본 체크로 변경
- src/translations/, CommunityPage.jsx, PostModifyPage.jsx, TipCommunityPage.jsx
  - tipsBoard에서 tipBoard로 json명 변경에 따른 수정

* fix: 사용자가 한줄소개를 입력 안 했을 때, 프로필 수정 페이지에서 한줄소개 입력창이 안 뜨는 문제 해결

* feat: 홈 카드에서의 채팅 연결 기능 추가

* fix: 알림 관련 문제 해결

수정사항
- api.js
  - 알림 조회 api 형식 변경에 따른 수정 (get: /notifications/)
- LoginPage.js, HomePage.js, NotificationPage.js
  - deviceId 저장 및 사용하여 알림 조회

* Fix/multiple improvements 3: 홈 카드 양끝 화살표, 북마크 및 좋아요 관련 오류 해결, 이미지 라이브러리 변경 (#135)

* style: 홈 양쪽 끝 카드의 화살표 삭제

* fix: 커뮤니티 페이지의 북마크 및 좋아요 관련 오류 해결

수정사항
- PostPage.jsx, ItemComment.jsx
  - 최초 북마크 취소 시 반영되지 않는 문제 해결
  - 게시글 좋아요 취소 시 빈 하트 아이콘이 제대로 업데이트되지 않는 문제 해결
  - 좋아요 두 번 이상 클릭할 때 생성/취소가 올바르게 반영되지 않는 문제 해결
  - 좋아요 생성한 글은 북마크 불가하던 문제 해결

* refactor: 이미지 라이브러리를 expo-image로 변경하여 캐싱이 가능하도록 개선

* fix: 커뮤니티 북마크 구분 및 채팅 북마크에서의 이름 제거

수정사항
- BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - 채팅 북마크와 구분하고 커뮤니티 북마크 부분만 가져오기 위한 필터 적용
  - 북마크 api 함수명 변경에 따른 수정에서 누락된 부분 보완
- BookmarkPage.jsx, Bookmark.jsx, ModalNoBookmark.jsx
  - 채팅 북마크에서 이름 제거

* style: Prettier & ESLint 적용

* Feat/landing notification onboarding improvements: 랜딩페이지 수정, 앱 내 채팅 알림 제거, 온보딩 관련 업데이트 (#139)

* style: 랜딩페이지에 강조 이미지 추가 및 작은 화면 스타일 조정

수정사항
- LandingPage.jsx, LandingStyles.jsx, chat_bubble.png, profile.png
  - 강조 이미지 추가
  - 작은 화면을 고려한 스타일 조정

* feat: 푸시알림 토큰 변경 및 앱 내 채팅 알림 제거

수정사항
- LoginPage.js
  - 푸시알림 토큰 변경
- NotificationPage.js, NotificationCard.js
  - 앱 내에 채팅 알림을 표시하지 않도록 수정

* feat: 온보딩 단계에서 사용자가 선택했던 정보 저장

수정사항
- ProfilePage.js, ProfileMbtiPage.js, ProfileHobbyPage.js, ProfileLanguagePage.js
  - 이전 페이지에서 해당 페이지로 돌아올 때 사용자가 선택했던 정보를 저장하도록 수정
- FilterCategory.js
  - 선택한 mbti와 취미/관심사를 시각적으로 보여줄 수 있도록 수정
- OnboardingContext.js
  - 언어 페이지에서 사용하는 체크박스 선택 정보를 저장하기 위해 checkLanguages 추가

* feat: 온보딩 mbti 페이지에서 선택한 mbti와 다른 mbti 선택 시 즉시 변경 기능 추가

* refactor: handleDataSave 함수 제거 및 onPress에 네비게이션 직접 연결

* Refactor/change image api to: 이름 기반 이미지 조회 API를 ID 기반 조회 API로 변경 (#141)

* refactor: 커뮤니티 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* refactor: 멤버 페이지의 마이페이지 조회 api에서 가져오던 presignURL 조회 방식을 ID 기반 조회로 변경

* refector:  멤버 및 채팅 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* fix: 프로필 이미지가 없는 사용자로 인한 채팅 세션 오류 해결 및 불필요한 주석 삭제

* refactor: 홈 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* feat: 홈 카드 스와이프 제스처 추가 (#142)

* feat: 홈 카드 스와이프 제스처 추가

* style: Prettier & ESLint 적용

* fix: 빌드 오류 수정을 위한 sentry 비활성화 및 i18n 설정 추가 (#145)

* chore(eas): PR을 올렸을 때, 버그 찾기 위해 Preview 보이게 하기 (#137)

개요

- EAS Update 기능을 활용해서, PR마다 branch를 checkout해서 다 확인할
필요없이 자동으로 임시의 Preview를 생성해서 구현 확인을 쉽게하자
- .env.dev는 dev에 들어갈 env를 정의한다. (gitignore에서 제외)
- dev-deploy 파이프라인을 만들어서 preview가 development 빌드의
브랜치에서 보일 수 있도록 한다.
- i18n에서 호환성 문제로 v3를 사용하도록 설정

* refactor(community): Community 페이지에서 Refactoring 진행 (#138)

개요

- fetchPosts를 해서 가져올 때 Promise All 해서 함께 보여줄 수 있도록
변경
- ternary에서 if문으로 바꾸어서  가독성 높임
- 일부 컴포넌트 외부 컴포넌트로 추출: CommunitySection

* fix(login): 로그인 창에서 키보드 깜빡이는 문제 해결 (#140)

개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component

* Feat/chat improvements: 채팅 갤러리 및 카메라 기능 임시 삭제, 개인별 채팅 북마크 페이지, 채팅 나가기 기능 (#147)

* chore: 채팅 세션의 갤러리 및 카메라 기능 임시 삭제

* feat: 개인별 채팅 북마크 페이지 생성

수정사항
- App.jsx
  - 개인별 채팅 북마크 페이지를 앱 내에 등록
- api.js
  - 개인별 채팅 북마크 조회 api 추가
- ChatBookmarkPage.jsx, ChatRoomPage.jsx
  - 개인별 채팅 북마크 페이지 생성 및 채팅방 페이지와 연결

* feat: 채팅 나가기 기능 추가

수정사항
- ChatroomItem.jsx, Delete.svg, IconChatroomExit.jsx
  - 스와이프하여 채팅 나가기 기능 추가
- ChatRoomPage.jsx
  - 채팅 나가기 기능 추가
- ChattingPage.jsx
  - 채팅을 나간 후 채팅 목록 업데이트

---------

Co-authored-by: Seungho Lee <poream3387@gmail.com>
@angelprzz
Copy link

I have the same problem with keyboardType="phone-pad" and autoComplete="tel"

@verrannt
Copy link

verrannt commented Oct 7, 2024

I was able to fix it by using what @artiemez proposed, but it's important to note that this only worked when using react-hook-form.

I.e. using autoComplete and autoCorrect on the normal React Native TextInput did nothing, but when wrapping it in a react-hook-form Controller and specifying keyboardType="email-address", then the jittering is gone for me, too.

@AbhijithKA2001
Copy link

I sometimes observe that problem in other apps so I guess there is something wrong with iOS. Hope iOS 18 will resolve the problems.

Could you please specify which apps you encountered the same issue in?

KooSuYeon pushed a commit to team-diverse/dife-frontend that referenced this issue Oct 17, 2024
* Feat/chat updates: 채팅 검색 후 뒤로가기, 채팅 및 북마크 번역 연결, 채팅방 모달, 채팅방 ui/ux 관련 업데이트 (#131)

* feat: 채팅 검색 기능 연결 및 검색 후 뒤로가기 기능 추가

수정사항
- api.js
  - 채팅 검색 api 연결
- ChattingPage.jsx, ChattingStyles.jsx
  - 채팅 검색 백엔드 연결
  - 검색 후 뒤로 가기 기능 추가

* feat: 채팅 세션 번역 라이브러리 적용

수정사항
- Bookmark.jsx, ChatInputSend.jsx, ModalNoBookmark.jsx, BookmarkPage.jsx, ChatRoomPage.jsx, ChattingPage.jsx, FriendListPage.jsx
  - 채팅 세션 번역 라이브러리 적용
  - 기본값 삭제
- src/translations/
  - 채팅 세션 번역 파일

* feat: 같은 사용자로부터 연속된 메시지에서 첫 번째 프로필 메시지 이후 들여쓰기 추가

* feat: 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현

수정사항
- api.js
  - 북마크 생성 백엔드 연결
- IconModalBookmark.jsx, IconModalCopy.jsx, src/components/chat/svg/
  - 모달에서 사용할 아이콘 제작
- ChatBubble.jsx, ModalMenuChat.jsx, ChatRoomPage.jsx
  - 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현
  - 북마크 기능을 위해 chatId 및 chatroomId 전달
- package.json, package-lock.json
  - 복사 기능을 위해 expo-clipboard 라이브러리 설치

* feat: 채팅 북마크 조회 및 번역 api 연결

수정사항
- api.js, BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - api 변수명 변경 및 변경에 따른 수정
- Bookmark.jsx, BookmarkPage.jsx
  - 채팅 북마크 조회 api 연결
  - 채팅 북마크 번역 api 연결

* feat: 채팅 번역 api 연결
- api.js
  - 채팅 번역 api 연결
- ChatBubble.jsx
  - 채팅 번역 api 연결 및 번역하기 기능 추가
  - 길게 눌렀을 때 진동 추가
- package.json, package-lock.json
  - 진동 기능을 위해 Expo Haptics 라이브러리 설치
- ModalMenuChat.jsx
  - 모달 위치 수정

* fix: 채팅 목록에서 닉네임이 안 보이던 문제 및 검색 시 키보드가 안 내려가는 문제 해결

* Fix/connect issues: 커넥트 페이지 문제 해결 (#132)

* style: 커넥트 요청 시 홈 화면 뒷면 문구 및 버튼 문구 변경

수정사항
- HomeCardBack.jsx
  - 커넥트 요청 시 문구를 '커넥트 요청하였습니다'로 변경
  - 커넥트 요청 시 버튼 문구를 ‘뒤로가기로 변경
- HomecardBackBtn.js
  - 조건문을 번역 라이브러리와 호환되도록 수정
- src/translations
  - 요청 완료 문구 추가

* fix: 커넥트 목록 페이지에서 목록 깜박거림 문제 수정

수정사항
- FriendListPage.jsx, RequestConnectListPage.jsx
  - 깜박거림 문제를 해결하기 위해 useEffect + 의존성 배열을 useFocusEffect + useCallback으로 변경

* Feat/password reset and landing update: 비밀번호 재설정 페이지 구현, 랜딩페이지 문구 및 이미지 교체 (#133)

* feat: 비밀번호 재설정 페이지 수정 및 구현

수정사항
- App.jsx
  - 비밀번호 재설정 페이지를 앱 내에 등록
- api.js
  - 비밀번호 재설정 api 연결
- LoginPage.js
  - 임시로 삭제했던 '비밀번호를 까먹었어요' 문구 복원
- FindPasswordPage.js, FindPasswordStyles.js, SetPasswordPage.jsx, SetPasswordStyles.jsx
  - 비밀번호 재설정 페이지 및 스타일 구현
- src/translations/
  - 비밀번호 재설정 페이지 번역 문구 추가

* style: 랜딩페이지 문구 및 이미지 교체

수정사항
- LandingPage.jsx, landing_chat.png, landing_community.png, landing_connect.png
  - 화질 개선된 이미지로 교체
- en.json, es.json
  - 긴 문구를 짧은 문구로 변경

* Fix/multiple improvements 2: 꿀팁게시판 json명, 댓글 익명을 기본으로 변경, 프로필 수정 페이지 한줄소개, 홈 카드 채팅 연결, 알림 관련 문제 해결 (#134)

* fix: 꿀팁게시판 json명 변경 및 댓글 익명을 기본으로 변경

수정사항
- PostPage.jsx
  - 댓글 입력창의 익명 여부를 기본 체크로 변경
- src/translations/, CommunityPage.jsx, PostModifyPage.jsx, TipCommunityPage.jsx
  - tipsBoard에서 tipBoard로 json명 변경에 따른 수정

* fix: 사용자가 한줄소개를 입력 안 했을 때, 프로필 수정 페이지에서 한줄소개 입력창이 안 뜨는 문제 해결

* feat: 홈 카드에서의 채팅 연결 기능 추가

* fix: 알림 관련 문제 해결

수정사항
- api.js
  - 알림 조회 api 형식 변경에 따른 수정 (get: /notifications/)
- LoginPage.js, HomePage.js, NotificationPage.js
  - deviceId 저장 및 사용하여 알림 조회

* Fix/multiple improvements 3: 홈 카드 양끝 화살표, 북마크 및 좋아요 관련 오류 해결, 이미지 라이브러리 변경 (#135)

* style: 홈 양쪽 끝 카드의 화살표 삭제

* fix: 커뮤니티 페이지의 북마크 및 좋아요 관련 오류 해결

수정사항
- PostPage.jsx, ItemComment.jsx
  - 최초 북마크 취소 시 반영되지 않는 문제 해결
  - 게시글 좋아요 취소 시 빈 하트 아이콘이 제대로 업데이트되지 않는 문제 해결
  - 좋아요 두 번 이상 클릭할 때 생성/취소가 올바르게 반영되지 않는 문제 해결
  - 좋아요 생성한 글은 북마크 불가하던 문제 해결

* refactor: 이미지 라이브러리를 expo-image로 변경하여 캐싱이 가능하도록 개선

* fix: 커뮤니티 북마크 구분 및 채팅 북마크에서의 이름 제거

수정사항
- BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - 채팅 북마크와 구분하고 커뮤니티 북마크 부분만 가져오기 위한 필터 적용
  - 북마크 api 함수명 변경에 따른 수정에서 누락된 부분 보완
- BookmarkPage.jsx, Bookmark.jsx, ModalNoBookmark.jsx
  - 채팅 북마크에서 이름 제거

* style: Prettier & ESLint 적용

* Feat/landing notification onboarding improvements: 랜딩페이지 수정, 앱 내 채팅 알림 제거, 온보딩 관련 업데이트 (#139)

* style: 랜딩페이지에 강조 이미지 추가 및 작은 화면 스타일 조정

수정사항
- LandingPage.jsx, LandingStyles.jsx, chat_bubble.png, profile.png
  - 강조 이미지 추가
  - 작은 화면을 고려한 스타일 조정

* feat: 푸시알림 토큰 변경 및 앱 내 채팅 알림 제거

수정사항
- LoginPage.js
  - 푸시알림 토큰 변경
- NotificationPage.js, NotificationCard.js
  - 앱 내에 채팅 알림을 표시하지 않도록 수정

* feat: 온보딩 단계에서 사용자가 선택했던 정보 저장

수정사항
- ProfilePage.js, ProfileMbtiPage.js, ProfileHobbyPage.js, ProfileLanguagePage.js
  - 이전 페이지에서 해당 페이지로 돌아올 때 사용자가 선택했던 정보를 저장하도록 수정
- FilterCategory.js
  - 선택한 mbti와 취미/관심사를 시각적으로 보여줄 수 있도록 수정
- OnboardingContext.js
  - 언어 페이지에서 사용하는 체크박스 선택 정보를 저장하기 위해 checkLanguages 추가

* feat: 온보딩 mbti 페이지에서 선택한 mbti와 다른 mbti 선택 시 즉시 변경 기능 추가

* refactor: handleDataSave 함수 제거 및 onPress에 네비게이션 직접 연결

* Refactor/change image api to: 이름 기반 이미지 조회 API를 ID 기반 조회 API로 변경 (#141)

* refactor: 커뮤니티 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* refactor: 멤버 페이지의 마이페이지 조회 api에서 가져오던 presignURL 조회 방식을 ID 기반 조회로 변경

* refector:  멤버 및 채팅 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* fix: 프로필 이미지가 없는 사용자로 인한 채팅 세션 오류 해결 및 불필요한 주석 삭제

* refactor: 홈 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* feat: 홈 카드 스와이프 제스처 추가 (#142)

* feat: 홈 카드 스와이프 제스처 추가

* style: Prettier & ESLint 적용

* fix: 빌드 오류 수정을 위한 sentry 비활성화 및 i18n 설정 추가 (#145)

* chore(eas): PR을 올렸을 때, 버그 찾기 위해 Preview 보이게 하기 (#137)

개요

- EAS Update 기능을 활용해서, PR마다 branch를 checkout해서 다 확인할
필요없이 자동으로 임시의 Preview를 생성해서 구현 확인을 쉽게하자
- .env.dev는 dev에 들어갈 env를 정의한다. (gitignore에서 제외)
- dev-deploy 파이프라인을 만들어서 preview가 development 빌드의
브랜치에서 보일 수 있도록 한다.
- i18n에서 호환성 문제로 v3를 사용하도록 설정

* refactor(community): Community 페이지에서 Refactoring 진행 (#138)

개요

- fetchPosts를 해서 가져올 때 Promise All 해서 함께 보여줄 수 있도록
변경
- ternary에서 if문으로 바꾸어서  가독성 높임
- 일부 컴포넌트 외부 컴포넌트로 추출: CommunitySection

* fix(login): 로그인 창에서 키보드 깜빡이는 문제 해결 (#140)

개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component

* Feat/chat improvements: 채팅 갤러리 및 카메라 기능 임시 삭제, 개인별 채팅 북마크 페이지, 채팅 나가기 기능 (#147)

* chore: 채팅 세션의 갤러리 및 카메라 기능 임시 삭제

* feat: 개인별 채팅 북마크 페이지 생성

수정사항
- App.jsx
  - 개인별 채팅 북마크 페이지를 앱 내에 등록
- api.js
  - 개인별 채팅 북마크 조회 api 추가
- ChatBookmarkPage.jsx, ChatRoomPage.jsx
  - 개인별 채팅 북마크 페이지 생성 및 채팅방 페이지와 연결

* feat: 채팅 나가기 기능 추가

수정사항
- ChatroomItem.jsx, Delete.svg, IconChatroomExit.jsx
  - 스와이프하여 채팅 나가기 기능 추가
- ChatRoomPage.jsx
  - 채팅 나가기 기능 추가
- ChattingPage.jsx
  - 채팅을 나간 후 채팅 목록 업데이트

---------

Co-authored-by: Seungho Lee <poream3387@gmail.com>
KooSuYeon pushed a commit to team-diverse/dife-frontend that referenced this issue Oct 17, 2024
* Feat/chat updates: 채팅 검색 후 뒤로가기, 채팅 및 북마크 번역 연결, 채팅방 모달, 채팅방 ui/ux 관련 업데이트 (#131)

* feat: 채팅 검색 기능 연결 및 검색 후 뒤로가기 기능 추가

수정사항
- api.js
  - 채팅 검색 api 연결
- ChattingPage.jsx, ChattingStyles.jsx
  - 채팅 검색 백엔드 연결
  - 검색 후 뒤로 가기 기능 추가

* feat: 채팅 세션 번역 라이브러리 적용

수정사항
- Bookmark.jsx, ChatInputSend.jsx, ModalNoBookmark.jsx, BookmarkPage.jsx, ChatRoomPage.jsx, ChattingPage.jsx, FriendListPage.jsx
  - 채팅 세션 번역 라이브러리 적용
  - 기본값 삭제
- src/translations/
  - 채팅 세션 번역 파일

* feat: 같은 사용자로부터 연속된 메시지에서 첫 번째 프로필 메시지 이후 들여쓰기 추가

* feat: 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현

수정사항
- api.js
  - 북마크 생성 백엔드 연결
- IconModalBookmark.jsx, IconModalCopy.jsx, src/components/chat/svg/
  - 모달에서 사용할 아이콘 제작
- ChatBubble.jsx, ModalMenuChat.jsx, ChatRoomPage.jsx
  - 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현
  - 북마크 기능을 위해 chatId 및 chatroomId 전달
- package.json, package-lock.json
  - 복사 기능을 위해 expo-clipboard 라이브러리 설치

* feat: 채팅 북마크 조회 및 번역 api 연결

수정사항
- api.js, BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - api 변수명 변경 및 변경에 따른 수정
- Bookmark.jsx, BookmarkPage.jsx
  - 채팅 북마크 조회 api 연결
  - 채팅 북마크 번역 api 연결

* feat: 채팅 번역 api 연결
- api.js
  - 채팅 번역 api 연결
- ChatBubble.jsx
  - 채팅 번역 api 연결 및 번역하기 기능 추가
  - 길게 눌렀을 때 진동 추가
- package.json, package-lock.json
  - 진동 기능을 위해 Expo Haptics 라이브러리 설치
- ModalMenuChat.jsx
  - 모달 위치 수정

* fix: 채팅 목록에서 닉네임이 안 보이던 문제 및 검색 시 키보드가 안 내려가는 문제 해결

* Fix/connect issues: 커넥트 페이지 문제 해결 (#132)

* style: 커넥트 요청 시 홈 화면 뒷면 문구 및 버튼 문구 변경

수정사항
- HomeCardBack.jsx
  - 커넥트 요청 시 문구를 '커넥트 요청하였습니다'로 변경
  - 커넥트 요청 시 버튼 문구를 ‘뒤로가기로 변경
- HomecardBackBtn.js
  - 조건문을 번역 라이브러리와 호환되도록 수정
- src/translations
  - 요청 완료 문구 추가

* fix: 커넥트 목록 페이지에서 목록 깜박거림 문제 수정

수정사항
- FriendListPage.jsx, RequestConnectListPage.jsx
  - 깜박거림 문제를 해결하기 위해 useEffect + 의존성 배열을 useFocusEffect + useCallback으로 변경

* Feat/password reset and landing update: 비밀번호 재설정 페이지 구현, 랜딩페이지 문구 및 이미지 교체 (#133)

* feat: 비밀번호 재설정 페이지 수정 및 구현

수정사항
- App.jsx
  - 비밀번호 재설정 페이지를 앱 내에 등록
- api.js
  - 비밀번호 재설정 api 연결
- LoginPage.js
  - 임시로 삭제했던 '비밀번호를 까먹었어요' 문구 복원
- FindPasswordPage.js, FindPasswordStyles.js, SetPasswordPage.jsx, SetPasswordStyles.jsx
  - 비밀번호 재설정 페이지 및 스타일 구현
- src/translations/
  - 비밀번호 재설정 페이지 번역 문구 추가

* style: 랜딩페이지 문구 및 이미지 교체

수정사항
- LandingPage.jsx, landing_chat.png, landing_community.png, landing_connect.png
  - 화질 개선된 이미지로 교체
- en.json, es.json
  - 긴 문구를 짧은 문구로 변경

* Fix/multiple improvements 2: 꿀팁게시판 json명, 댓글 익명을 기본으로 변경, 프로필 수정 페이지 한줄소개, 홈 카드 채팅 연결, 알림 관련 문제 해결 (#134)

* fix: 꿀팁게시판 json명 변경 및 댓글 익명을 기본으로 변경

수정사항
- PostPage.jsx
  - 댓글 입력창의 익명 여부를 기본 체크로 변경
- src/translations/, CommunityPage.jsx, PostModifyPage.jsx, TipCommunityPage.jsx
  - tipsBoard에서 tipBoard로 json명 변경에 따른 수정

* fix: 사용자가 한줄소개를 입력 안 했을 때, 프로필 수정 페이지에서 한줄소개 입력창이 안 뜨는 문제 해결

* feat: 홈 카드에서의 채팅 연결 기능 추가

* fix: 알림 관련 문제 해결

수정사항
- api.js
  - 알림 조회 api 형식 변경에 따른 수정 (get: /notifications/)
- LoginPage.js, HomePage.js, NotificationPage.js
  - deviceId 저장 및 사용하여 알림 조회

* Fix/multiple improvements 3: 홈 카드 양끝 화살표, 북마크 및 좋아요 관련 오류 해결, 이미지 라이브러리 변경 (#135)

* style: 홈 양쪽 끝 카드의 화살표 삭제

* fix: 커뮤니티 페이지의 북마크 및 좋아요 관련 오류 해결

수정사항
- PostPage.jsx, ItemComment.jsx
  - 최초 북마크 취소 시 반영되지 않는 문제 해결
  - 게시글 좋아요 취소 시 빈 하트 아이콘이 제대로 업데이트되지 않는 문제 해결
  - 좋아요 두 번 이상 클릭할 때 생성/취소가 올바르게 반영되지 않는 문제 해결
  - 좋아요 생성한 글은 북마크 불가하던 문제 해결

* refactor: 이미지 라이브러리를 expo-image로 변경하여 캐싱이 가능하도록 개선

* fix: 커뮤니티 북마크 구분 및 채팅 북마크에서의 이름 제거

수정사항
- BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - 채팅 북마크와 구분하고 커뮤니티 북마크 부분만 가져오기 위한 필터 적용
  - 북마크 api 함수명 변경에 따른 수정에서 누락된 부분 보완
- BookmarkPage.jsx, Bookmark.jsx, ModalNoBookmark.jsx
  - 채팅 북마크에서 이름 제거

* style: Prettier & ESLint 적용

* Feat/landing notification onboarding improvements: 랜딩페이지 수정, 앱 내 채팅 알림 제거, 온보딩 관련 업데이트 (#139)

* style: 랜딩페이지에 강조 이미지 추가 및 작은 화면 스타일 조정

수정사항
- LandingPage.jsx, LandingStyles.jsx, chat_bubble.png, profile.png
  - 강조 이미지 추가
  - 작은 화면을 고려한 스타일 조정

* feat: 푸시알림 토큰 변경 및 앱 내 채팅 알림 제거

수정사항
- LoginPage.js
  - 푸시알림 토큰 변경
- NotificationPage.js, NotificationCard.js
  - 앱 내에 채팅 알림을 표시하지 않도록 수정

* feat: 온보딩 단계에서 사용자가 선택했던 정보 저장

수정사항
- ProfilePage.js, ProfileMbtiPage.js, ProfileHobbyPage.js, ProfileLanguagePage.js
  - 이전 페이지에서 해당 페이지로 돌아올 때 사용자가 선택했던 정보를 저장하도록 수정
- FilterCategory.js
  - 선택한 mbti와 취미/관심사를 시각적으로 보여줄 수 있도록 수정
- OnboardingContext.js
  - 언어 페이지에서 사용하는 체크박스 선택 정보를 저장하기 위해 checkLanguages 추가

* feat: 온보딩 mbti 페이지에서 선택한 mbti와 다른 mbti 선택 시 즉시 변경 기능 추가

* refactor: handleDataSave 함수 제거 및 onPress에 네비게이션 직접 연결

* Refactor/change image api to: 이름 기반 이미지 조회 API를 ID 기반 조회 API로 변경 (#141)

* refactor: 커뮤니티 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* refactor: 멤버 페이지의 마이페이지 조회 api에서 가져오던 presignURL 조회 방식을 ID 기반 조회로 변경

* refector:  멤버 및 채팅 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* fix: 프로필 이미지가 없는 사용자로 인한 채팅 세션 오류 해결 및 불필요한 주석 삭제

* refactor: 홈 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* feat: 홈 카드 스와이프 제스처 추가 (#142)

* feat: 홈 카드 스와이프 제스처 추가

* style: Prettier & ESLint 적용

* fix: 빌드 오류 수정을 위한 sentry 비활성화 및 i18n 설정 추가 (#145)

* chore(eas): PR을 올렸을 때, 버그 찾기 위해 Preview 보이게 하기 (#137)

개요

- EAS Update 기능을 활용해서, PR마다 branch를 checkout해서 다 확인할
필요없이 자동으로 임시의 Preview를 생성해서 구현 확인을 쉽게하자
- .env.dev는 dev에 들어갈 env를 정의한다. (gitignore에서 제외)
- dev-deploy 파이프라인을 만들어서 preview가 development 빌드의
브랜치에서 보일 수 있도록 한다.
- i18n에서 호환성 문제로 v3를 사용하도록 설정

* refactor(community): Community 페이지에서 Refactoring 진행 (#138)

개요

- fetchPosts를 해서 가져올 때 Promise All 해서 함께 보여줄 수 있도록
변경
- ternary에서 if문으로 바꾸어서  가독성 높임
- 일부 컴포넌트 외부 컴포넌트로 추출: CommunitySection

* fix(login): 로그인 창에서 키보드 깜빡이는 문제 해결 (#140)

개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component

* Feat/chat improvements: 채팅 갤러리 및 카메라 기능 임시 삭제, 개인별 채팅 북마크 페이지, 채팅 나가기 기능 (#147)

* chore: 채팅 세션의 갤러리 및 카메라 기능 임시 삭제

* feat: 개인별 채팅 북마크 페이지 생성

수정사항
- App.jsx
  - 개인별 채팅 북마크 페이지를 앱 내에 등록
- api.js
  - 개인별 채팅 북마크 조회 api 추가
- ChatBookmarkPage.jsx, ChatRoomPage.jsx
  - 개인별 채팅 북마크 페이지 생성 및 채팅방 페이지와 연결

* feat: 채팅 나가기 기능 추가

수정사항
- ChatroomItem.jsx, Delete.svg, IconChatroomExit.jsx
  - 스와이프하여 채팅 나가기 기능 추가
- ChatRoomPage.jsx
  - 채팅 나가기 기능 추가
- ChattingPage.jsx
  - 채팅을 나간 후 채팅 목록 업데이트

---------

Co-authored-by: Seungho Lee <poream3387@gmail.com>
KooSuYeon added a commit to team-diverse/dife-frontend that referenced this issue Oct 17, 2024
* Dev (#148)

* Feat/chat updates: 채팅 검색 후 뒤로가기, 채팅 및 북마크 번역 연결, 채팅방 모달, 채팅방 ui/ux 관련 업데이트 (#131)

* feat: 채팅 검색 기능 연결 및 검색 후 뒤로가기 기능 추가

수정사항
- api.js
  - 채팅 검색 api 연결
- ChattingPage.jsx, ChattingStyles.jsx
  - 채팅 검색 백엔드 연결
  - 검색 후 뒤로 가기 기능 추가

* feat: 채팅 세션 번역 라이브러리 적용

수정사항
- Bookmark.jsx, ChatInputSend.jsx, ModalNoBookmark.jsx, BookmarkPage.jsx, ChatRoomPage.jsx, ChattingPage.jsx, FriendListPage.jsx
  - 채팅 세션 번역 라이브러리 적용
  - 기본값 삭제
- src/translations/
  - 채팅 세션 번역 파일

* feat: 같은 사용자로부터 연속된 메시지에서 첫 번째 프로필 메시지 이후 들여쓰기 추가

* feat: 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현

수정사항
- api.js
  - 북마크 생성 백엔드 연결
- IconModalBookmark.jsx, IconModalCopy.jsx, src/components/chat/svg/
  - 모달에서 사용할 아이콘 제작
- ChatBubble.jsx, ModalMenuChat.jsx, ChatRoomPage.jsx
  - 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현
  - 북마크 기능을 위해 chatId 및 chatroomId 전달
- package.json, package-lock.json
  - 복사 기능을 위해 expo-clipboard 라이브러리 설치

* feat: 채팅 북마크 조회 및 번역 api 연결

수정사항
- api.js, BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - api 변수명 변경 및 변경에 따른 수정
- Bookmark.jsx, BookmarkPage.jsx
  - 채팅 북마크 조회 api 연결
  - 채팅 북마크 번역 api 연결

* feat: 채팅 번역 api 연결
- api.js
  - 채팅 번역 api 연결
- ChatBubble.jsx
  - 채팅 번역 api 연결 및 번역하기 기능 추가
  - 길게 눌렀을 때 진동 추가
- package.json, package-lock.json
  - 진동 기능을 위해 Expo Haptics 라이브러리 설치
- ModalMenuChat.jsx
  - 모달 위치 수정

* fix: 채팅 목록에서 닉네임이 안 보이던 문제 및 검색 시 키보드가 안 내려가는 문제 해결

* Fix/connect issues: 커넥트 페이지 문제 해결 (#132)

* style: 커넥트 요청 시 홈 화면 뒷면 문구 및 버튼 문구 변경

수정사항
- HomeCardBack.jsx
  - 커넥트 요청 시 문구를 '커넥트 요청하였습니다'로 변경
  - 커넥트 요청 시 버튼 문구를 ‘뒤로가기로 변경
- HomecardBackBtn.js
  - 조건문을 번역 라이브러리와 호환되도록 수정
- src/translations
  - 요청 완료 문구 추가

* fix: 커넥트 목록 페이지에서 목록 깜박거림 문제 수정

수정사항
- FriendListPage.jsx, RequestConnectListPage.jsx
  - 깜박거림 문제를 해결하기 위해 useEffect + 의존성 배열을 useFocusEffect + useCallback으로 변경

* Feat/password reset and landing update: 비밀번호 재설정 페이지 구현, 랜딩페이지 문구 및 이미지 교체 (#133)

* feat: 비밀번호 재설정 페이지 수정 및 구현

수정사항
- App.jsx
  - 비밀번호 재설정 페이지를 앱 내에 등록
- api.js
  - 비밀번호 재설정 api 연결
- LoginPage.js
  - 임시로 삭제했던 '비밀번호를 까먹었어요' 문구 복원
- FindPasswordPage.js, FindPasswordStyles.js, SetPasswordPage.jsx, SetPasswordStyles.jsx
  - 비밀번호 재설정 페이지 및 스타일 구현
- src/translations/
  - 비밀번호 재설정 페이지 번역 문구 추가

* style: 랜딩페이지 문구 및 이미지 교체

수정사항
- LandingPage.jsx, landing_chat.png, landing_community.png, landing_connect.png
  - 화질 개선된 이미지로 교체
- en.json, es.json
  - 긴 문구를 짧은 문구로 변경

* Fix/multiple improvements 2: 꿀팁게시판 json명, 댓글 익명을 기본으로 변경, 프로필 수정 페이지 한줄소개, 홈 카드 채팅 연결, 알림 관련 문제 해결 (#134)

* fix: 꿀팁게시판 json명 변경 및 댓글 익명을 기본으로 변경

수정사항
- PostPage.jsx
  - 댓글 입력창의 익명 여부를 기본 체크로 변경
- src/translations/, CommunityPage.jsx, PostModifyPage.jsx, TipCommunityPage.jsx
  - tipsBoard에서 tipBoard로 json명 변경에 따른 수정

* fix: 사용자가 한줄소개를 입력 안 했을 때, 프로필 수정 페이지에서 한줄소개 입력창이 안 뜨는 문제 해결

* feat: 홈 카드에서의 채팅 연결 기능 추가

* fix: 알림 관련 문제 해결

수정사항
- api.js
  - 알림 조회 api 형식 변경에 따른 수정 (get: /notifications/)
- LoginPage.js, HomePage.js, NotificationPage.js
  - deviceId 저장 및 사용하여 알림 조회

* Fix/multiple improvements 3: 홈 카드 양끝 화살표, 북마크 및 좋아요 관련 오류 해결, 이미지 라이브러리 변경 (#135)

* style: 홈 양쪽 끝 카드의 화살표 삭제

* fix: 커뮤니티 페이지의 북마크 및 좋아요 관련 오류 해결

수정사항
- PostPage.jsx, ItemComment.jsx
  - 최초 북마크 취소 시 반영되지 않는 문제 해결
  - 게시글 좋아요 취소 시 빈 하트 아이콘이 제대로 업데이트되지 않는 문제 해결
  - 좋아요 두 번 이상 클릭할 때 생성/취소가 올바르게 반영되지 않는 문제 해결
  - 좋아요 생성한 글은 북마크 불가하던 문제 해결

* refactor: 이미지 라이브러리를 expo-image로 변경하여 캐싱이 가능하도록 개선

* fix: 커뮤니티 북마크 구분 및 채팅 북마크에서의 이름 제거

수정사항
- BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - 채팅 북마크와 구분하고 커뮤니티 북마크 부분만 가져오기 위한 필터 적용
  - 북마크 api 함수명 변경에 따른 수정에서 누락된 부분 보완
- BookmarkPage.jsx, Bookmark.jsx, ModalNoBookmark.jsx
  - 채팅 북마크에서 이름 제거

* style: Prettier & ESLint 적용

* Feat/landing notification onboarding improvements: 랜딩페이지 수정, 앱 내 채팅 알림 제거, 온보딩 관련 업데이트 (#139)

* style: 랜딩페이지에 강조 이미지 추가 및 작은 화면 스타일 조정

수정사항
- LandingPage.jsx, LandingStyles.jsx, chat_bubble.png, profile.png
  - 강조 이미지 추가
  - 작은 화면을 고려한 스타일 조정

* feat: 푸시알림 토큰 변경 및 앱 내 채팅 알림 제거

수정사항
- LoginPage.js
  - 푸시알림 토큰 변경
- NotificationPage.js, NotificationCard.js
  - 앱 내에 채팅 알림을 표시하지 않도록 수정

* feat: 온보딩 단계에서 사용자가 선택했던 정보 저장

수정사항
- ProfilePage.js, ProfileMbtiPage.js, ProfileHobbyPage.js, ProfileLanguagePage.js
  - 이전 페이지에서 해당 페이지로 돌아올 때 사용자가 선택했던 정보를 저장하도록 수정
- FilterCategory.js
  - 선택한 mbti와 취미/관심사를 시각적으로 보여줄 수 있도록 수정
- OnboardingContext.js
  - 언어 페이지에서 사용하는 체크박스 선택 정보를 저장하기 위해 checkLanguages 추가

* feat: 온보딩 mbti 페이지에서 선택한 mbti와 다른 mbti 선택 시 즉시 변경 기능 추가

* refactor: handleDataSave 함수 제거 및 onPress에 네비게이션 직접 연결

* Refactor/change image api to: 이름 기반 이미지 조회 API를 ID 기반 조회 API로 변경 (#141)

* refactor: 커뮤니티 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* refactor: 멤버 페이지의 마이페이지 조회 api에서 가져오던 presignURL 조회 방식을 ID 기반 조회로 변경

* refector:  멤버 및 채팅 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* fix: 프로필 이미지가 없는 사용자로 인한 채팅 세션 오류 해결 및 불필요한 주석 삭제

* refactor: 홈 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* feat: 홈 카드 스와이프 제스처 추가 (#142)

* feat: 홈 카드 스와이프 제스처 추가

* style: Prettier & ESLint 적용

* fix: 빌드 오류 수정을 위한 sentry 비활성화 및 i18n 설정 추가 (#145)

* chore(eas): PR을 올렸을 때, 버그 찾기 위해 Preview 보이게 하기 (#137)

개요

- EAS Update 기능을 활용해서, PR마다 branch를 checkout해서 다 확인할
필요없이 자동으로 임시의 Preview를 생성해서 구현 확인을 쉽게하자
- .env.dev는 dev에 들어갈 env를 정의한다. (gitignore에서 제외)
- dev-deploy 파이프라인을 만들어서 preview가 development 빌드의
브랜치에서 보일 수 있도록 한다.
- i18n에서 호환성 문제로 v3를 사용하도록 설정

* refactor(community): Community 페이지에서 Refactoring 진행 (#138)

개요

- fetchPosts를 해서 가져올 때 Promise All 해서 함께 보여줄 수 있도록
변경
- ternary에서 if문으로 바꾸어서  가독성 높임
- 일부 컴포넌트 외부 컴포넌트로 추출: CommunitySection

* fix(login): 로그인 창에서 키보드 깜빡이는 문제 해결 (#140)

개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component

* Feat/chat improvements: 채팅 갤러리 및 카메라 기능 임시 삭제, 개인별 채팅 북마크 페이지, 채팅 나가기 기능 (#147)

* chore: 채팅 세션의 갤러리 및 카메라 기능 임시 삭제

* feat: 개인별 채팅 북마크 페이지 생성

수정사항
- App.jsx
  - 개인별 채팅 북마크 페이지를 앱 내에 등록
- api.js
  - 개인별 채팅 북마크 조회 api 추가
- ChatBookmarkPage.jsx, ChatRoomPage.jsx
  - 개인별 채팅 북마크 페이지 생성 및 채팅방 페이지와 연결

* feat: 채팅 나가기 기능 추가

수정사항
- ChatroomItem.jsx, Delete.svg, IconChatroomExit.jsx
  - 스와이프하여 채팅 나가기 기능 추가
- ChatRoomPage.jsx
  - 채팅 나가기 기능 추가
- ChattingPage.jsx
  - 채팅을 나간 후 채팅 목록 업데이트

---------

Co-authored-by: Seungho Lee <poream3387@gmail.com>

* test/from-dev-1: From Dev To Staging

* test/from-dev-2: package 테스트 오류잡기

---------

Co-authored-by: nnyouung <104901660+nnyouung@users.noreply.github.com>
Co-authored-by: Seungho Lee <poream3387@gmail.com>
KooSuYeon pushed a commit to team-diverse/dife-frontend that referenced this issue Oct 17, 2024
* Feat/chat updates: 채팅 검색 후 뒤로가기, 채팅 및 북마크 번역 연결, 채팅방 모달, 채팅방 ui/ux 관련 업데이트 (#131)

* feat: 채팅 검색 기능 연결 및 검색 후 뒤로가기 기능 추가

수정사항
- api.js
  - 채팅 검색 api 연결
- ChattingPage.jsx, ChattingStyles.jsx
  - 채팅 검색 백엔드 연결
  - 검색 후 뒤로 가기 기능 추가

* feat: 채팅 세션 번역 라이브러리 적용

수정사항
- Bookmark.jsx, ChatInputSend.jsx, ModalNoBookmark.jsx, BookmarkPage.jsx, ChatRoomPage.jsx, ChattingPage.jsx, FriendListPage.jsx
  - 채팅 세션 번역 라이브러리 적용
  - 기본값 삭제
- src/translations/
  - 채팅 세션 번역 파일

* feat: 같은 사용자로부터 연속된 메시지에서 첫 번째 프로필 메시지 이후 들여쓰기 추가

* feat: 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현

수정사항
- api.js
  - 북마크 생성 백엔드 연결
- IconModalBookmark.jsx, IconModalCopy.jsx, src/components/chat/svg/
  - 모달에서 사용할 아이콘 제작
- ChatBubble.jsx, ModalMenuChat.jsx, ChatRoomPage.jsx
  - 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현
  - 북마크 기능을 위해 chatId 및 chatroomId 전달
- package.json, package-lock.json
  - 복사 기능을 위해 expo-clipboard 라이브러리 설치

* feat: 채팅 북마크 조회 및 번역 api 연결

수정사항
- api.js, BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - api 변수명 변경 및 변경에 따른 수정
- Bookmark.jsx, BookmarkPage.jsx
  - 채팅 북마크 조회 api 연결
  - 채팅 북마크 번역 api 연결

* feat: 채팅 번역 api 연결
- api.js
  - 채팅 번역 api 연결
- ChatBubble.jsx
  - 채팅 번역 api 연결 및 번역하기 기능 추가
  - 길게 눌렀을 때 진동 추가
- package.json, package-lock.json
  - 진동 기능을 위해 Expo Haptics 라이브러리 설치
- ModalMenuChat.jsx
  - 모달 위치 수정

* fix: 채팅 목록에서 닉네임이 안 보이던 문제 및 검색 시 키보드가 안 내려가는 문제 해결

* Fix/connect issues: 커넥트 페이지 문제 해결 (#132)

* style: 커넥트 요청 시 홈 화면 뒷면 문구 및 버튼 문구 변경

수정사항
- HomeCardBack.jsx
  - 커넥트 요청 시 문구를 '커넥트 요청하였습니다'로 변경
  - 커넥트 요청 시 버튼 문구를 ‘뒤로가기로 변경
- HomecardBackBtn.js
  - 조건문을 번역 라이브러리와 호환되도록 수정
- src/translations
  - 요청 완료 문구 추가

* fix: 커넥트 목록 페이지에서 목록 깜박거림 문제 수정

수정사항
- FriendListPage.jsx, RequestConnectListPage.jsx
  - 깜박거림 문제를 해결하기 위해 useEffect + 의존성 배열을 useFocusEffect + useCallback으로 변경

* Feat/password reset and landing update: 비밀번호 재설정 페이지 구현, 랜딩페이지 문구 및 이미지 교체 (#133)

* feat: 비밀번호 재설정 페이지 수정 및 구현

수정사항
- App.jsx
  - 비밀번호 재설정 페이지를 앱 내에 등록
- api.js
  - 비밀번호 재설정 api 연결
- LoginPage.js
  - 임시로 삭제했던 '비밀번호를 까먹었어요' 문구 복원
- FindPasswordPage.js, FindPasswordStyles.js, SetPasswordPage.jsx, SetPasswordStyles.jsx
  - 비밀번호 재설정 페이지 및 스타일 구현
- src/translations/
  - 비밀번호 재설정 페이지 번역 문구 추가

* style: 랜딩페이지 문구 및 이미지 교체

수정사항
- LandingPage.jsx, landing_chat.png, landing_community.png, landing_connect.png
  - 화질 개선된 이미지로 교체
- en.json, es.json
  - 긴 문구를 짧은 문구로 변경

* Fix/multiple improvements 2: 꿀팁게시판 json명, 댓글 익명을 기본으로 변경, 프로필 수정 페이지 한줄소개, 홈 카드 채팅 연결, 알림 관련 문제 해결 (#134)

* fix: 꿀팁게시판 json명 변경 및 댓글 익명을 기본으로 변경

수정사항
- PostPage.jsx
  - 댓글 입력창의 익명 여부를 기본 체크로 변경
- src/translations/, CommunityPage.jsx, PostModifyPage.jsx, TipCommunityPage.jsx
  - tipsBoard에서 tipBoard로 json명 변경에 따른 수정

* fix: 사용자가 한줄소개를 입력 안 했을 때, 프로필 수정 페이지에서 한줄소개 입력창이 안 뜨는 문제 해결

* feat: 홈 카드에서의 채팅 연결 기능 추가

* fix: 알림 관련 문제 해결

수정사항
- api.js
  - 알림 조회 api 형식 변경에 따른 수정 (get: /notifications/)
- LoginPage.js, HomePage.js, NotificationPage.js
  - deviceId 저장 및 사용하여 알림 조회

* Fix/multiple improvements 3: 홈 카드 양끝 화살표, 북마크 및 좋아요 관련 오류 해결, 이미지 라이브러리 변경 (#135)

* style: 홈 양쪽 끝 카드의 화살표 삭제

* fix: 커뮤니티 페이지의 북마크 및 좋아요 관련 오류 해결

수정사항
- PostPage.jsx, ItemComment.jsx
  - 최초 북마크 취소 시 반영되지 않는 문제 해결
  - 게시글 좋아요 취소 시 빈 하트 아이콘이 제대로 업데이트되지 않는 문제 해결
  - 좋아요 두 번 이상 클릭할 때 생성/취소가 올바르게 반영되지 않는 문제 해결
  - 좋아요 생성한 글은 북마크 불가하던 문제 해결

* refactor: 이미지 라이브러리를 expo-image로 변경하여 캐싱이 가능하도록 개선

* fix: 커뮤니티 북마크 구분 및 채팅 북마크에서의 이름 제거

수정사항
- BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - 채팅 북마크와 구분하고 커뮤니티 북마크 부분만 가져오기 위한 필터 적용
  - 북마크 api 함수명 변경에 따른 수정에서 누락된 부분 보완
- BookmarkPage.jsx, Bookmark.jsx, ModalNoBookmark.jsx
  - 채팅 북마크에서 이름 제거

* style: Prettier & ESLint 적용

* Feat/landing notification onboarding improvements: 랜딩페이지 수정, 앱 내 채팅 알림 제거, 온보딩 관련 업데이트 (#139)

* style: 랜딩페이지에 강조 이미지 추가 및 작은 화면 스타일 조정

수정사항
- LandingPage.jsx, LandingStyles.jsx, chat_bubble.png, profile.png
  - 강조 이미지 추가
  - 작은 화면을 고려한 스타일 조정

* feat: 푸시알림 토큰 변경 및 앱 내 채팅 알림 제거

수정사항
- LoginPage.js
  - 푸시알림 토큰 변경
- NotificationPage.js, NotificationCard.js
  - 앱 내에 채팅 알림을 표시하지 않도록 수정

* feat: 온보딩 단계에서 사용자가 선택했던 정보 저장

수정사항
- ProfilePage.js, ProfileMbtiPage.js, ProfileHobbyPage.js, ProfileLanguagePage.js
  - 이전 페이지에서 해당 페이지로 돌아올 때 사용자가 선택했던 정보를 저장하도록 수정
- FilterCategory.js
  - 선택한 mbti와 취미/관심사를 시각적으로 보여줄 수 있도록 수정
- OnboardingContext.js
  - 언어 페이지에서 사용하는 체크박스 선택 정보를 저장하기 위해 checkLanguages 추가

* feat: 온보딩 mbti 페이지에서 선택한 mbti와 다른 mbti 선택 시 즉시 변경 기능 추가

* refactor: handleDataSave 함수 제거 및 onPress에 네비게이션 직접 연결

* Refactor/change image api to: 이름 기반 이미지 조회 API를 ID 기반 조회 API로 변경 (#141)

* refactor: 커뮤니티 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* refactor: 멤버 페이지의 마이페이지 조회 api에서 가져오던 presignURL 조회 방식을 ID 기반 조회로 변경

* refector:  멤버 및 채팅 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* fix: 프로필 이미지가 없는 사용자로 인한 채팅 세션 오류 해결 및 불필요한 주석 삭제

* refactor: 홈 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* feat: 홈 카드 스와이프 제스처 추가 (#142)

* feat: 홈 카드 스와이프 제스처 추가

* style: Prettier & ESLint 적용

* fix: 빌드 오류 수정을 위한 sentry 비활성화 및 i18n 설정 추가 (#145)

* chore(eas): PR을 올렸을 때, 버그 찾기 위해 Preview 보이게 하기 (#137)

개요

- EAS Update 기능을 활용해서, PR마다 branch를 checkout해서 다 확인할
필요없이 자동으로 임시의 Preview를 생성해서 구현 확인을 쉽게하자
- .env.dev는 dev에 들어갈 env를 정의한다. (gitignore에서 제외)
- dev-deploy 파이프라인을 만들어서 preview가 development 빌드의
브랜치에서 보일 수 있도록 한다.
- i18n에서 호환성 문제로 v3를 사용하도록 설정

* refactor(community): Community 페이지에서 Refactoring 진행 (#138)

개요

- fetchPosts를 해서 가져올 때 Promise All 해서 함께 보여줄 수 있도록
변경
- ternary에서 if문으로 바꾸어서  가독성 높임
- 일부 컴포넌트 외부 컴포넌트로 추출: CommunitySection

* fix(login): 로그인 창에서 키보드 깜빡이는 문제 해결 (#140)

개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component

* Feat/chat improvements: 채팅 갤러리 및 카메라 기능 임시 삭제, 개인별 채팅 북마크 페이지, 채팅 나가기 기능 (#147)

* chore: 채팅 세션의 갤러리 및 카메라 기능 임시 삭제

* feat: 개인별 채팅 북마크 페이지 생성

수정사항
- App.jsx
  - 개인별 채팅 북마크 페이지를 앱 내에 등록
- api.js
  - 개인별 채팅 북마크 조회 api 추가
- ChatBookmarkPage.jsx, ChatRoomPage.jsx
  - 개인별 채팅 북마크 페이지 생성 및 채팅방 페이지와 연결

* feat: 채팅 나가기 기능 추가

수정사항
- ChatroomItem.jsx, Delete.svg, IconChatroomExit.jsx
  - 스와이프하여 채팅 나가기 기능 추가
- ChatRoomPage.jsx
  - 채팅 나가기 기능 추가
- ChattingPage.jsx
  - 채팅을 나간 후 채팅 목록 업데이트

---------

Co-authored-by: Seungho Lee <poream3387@gmail.com>
KooSuYeon added a commit to team-diverse/dife-frontend that referenced this issue Oct 18, 2024
* Feat/chat jwt : 채팅에 JWT 입히기 & 넘치는 채팅 조절 (#152)

* feat/chat-jwt-1: refreshToken으로 Auth 변경

- 기존 accessToken으로만 가져왔던 부분 -> refreshToken으로 변경
(AppConfig에 적용)

* feat/chat-jwt-2: 채팅에 JWT 적용

- SecureStore 이용해 refreshToken 가져온 후 가져온 token을 CONNECT/SUB/CHAT 시에 사용
- 기존 채팅에서 가져왔던 memberId 삭제 및 SecurityContext 적용

* feat/chat-jwt-3 : 장문 채팅 깨짐 문제 해결

- 말풍선 보낸이에 따라 채팅 상단/하단에 위치할 지 설정 -> underlay, trailContainer
- 겹칠 때에는 ChattingBubble이 우선시 되도록 zIndex 부여 (1이 우선)

- 채팅 좌우 패딩 줄이기

* feat/chat-jwt-4: run prettier

* feat/chat-jwt-5: lint test

* feat/chat-jwt-6: SecureStore로 들어오는 refreshToken 가져오기 함수화

* feat/chat-keyboard-1: 채팅 키보드 겹침 해결 (#153)

* feat/chat-keyboard-1: 채팅 키보드 겹침 해결

- ChatInputSend를 KeyboardAvoidingView로 겹치는 것이 아닌 ChatRoomPage에서KeyboardAvoidingView로 빼서 키보드%채팅 겹침 해결
- 채팅을 친 후에 자동으로 스크롤 되도록 handleScroll 추가
- 스크롤 바 추가

* feat/chat-keyboard-2: Lint Test

* feat/chat-keyboard-3:npm install --legacy-peer-deps

* feat/chat-keyboard-4: punyCode 추가 및 react-native-safe-area-context 4.7.1 버전 change

* feat/chat-keyboard-5: package.json 불필요사항 삭제

* feat/chat-keyboard-6: 채팅방 친구 목록에서 채팅방 접근 JWT 부여

- 빠트렸던 채팅방 친구 목록에서 채팅방 접근 시에 JWT가 부여될 수 있도록 수정
- ChatroomPage에서도 JWT 부여
- 채팅방 상단 툴 바 marginBottom 줄이기

* feat/chat-keyboard-7: eLint test

* refactor/login-chat-keyboard-1: 로그인 시 비밀번호 보이게 입력할 수 있도록 (#154)

- 채팅 marginTop 원래대로

* Dev (#148)

* Feat/chat updates: 채팅 검색 후 뒤로가기, 채팅 및 북마크 번역 연결, 채팅방 모달, 채팅방 ui/ux 관련 업데이트 (#131)

* feat: 채팅 검색 기능 연결 및 검색 후 뒤로가기 기능 추가

수정사항
- api.js
  - 채팅 검색 api 연결
- ChattingPage.jsx, ChattingStyles.jsx
  - 채팅 검색 백엔드 연결
  - 검색 후 뒤로 가기 기능 추가

* feat: 채팅 세션 번역 라이브러리 적용

수정사항
- Bookmark.jsx, ChatInputSend.jsx, ModalNoBookmark.jsx, BookmarkPage.jsx, ChatRoomPage.jsx, ChattingPage.jsx, FriendListPage.jsx
  - 채팅 세션 번역 라이브러리 적용
  - 기본값 삭제
- src/translations/
  - 채팅 세션 번역 파일

* feat: 같은 사용자로부터 연속된 메시지에서 첫 번째 프로필 메시지 이후 들여쓰기 추가

* feat: 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현

수정사항
- api.js
  - 북마크 생성 백엔드 연결
- IconModalBookmark.jsx, IconModalCopy.jsx, src/components/chat/svg/
  - 모달에서 사용할 아이콘 제작
- ChatBubble.jsx, ModalMenuChat.jsx, ChatRoomPage.jsx
  - 채팅 버블을 길게 눌렀을 때의 북마크, 복사, 신고 모달 기능 구현
  - 북마크 기능을 위해 chatId 및 chatroomId 전달
- package.json, package-lock.json
  - 복사 기능을 위해 expo-clipboard 라이브러리 설치

* feat: 채팅 북마크 조회 및 번역 api 연결

수정사항
- api.js, BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - api 변수명 변경 및 변경에 따른 수정
- Bookmark.jsx, BookmarkPage.jsx
  - 채팅 북마크 조회 api 연결
  - 채팅 북마크 번역 api 연결

* feat: 채팅 번역 api 연결
- api.js
  - 채팅 번역 api 연결
- ChatBubble.jsx
  - 채팅 번역 api 연결 및 번역하기 기능 추가
  - 길게 눌렀을 때 진동 추가
- package.json, package-lock.json
  - 진동 기능을 위해 Expo Haptics 라이브러리 설치
- ModalMenuChat.jsx
  - 모달 위치 수정

* fix: 채팅 목록에서 닉네임이 안 보이던 문제 및 검색 시 키보드가 안 내려가는 문제 해결

* Fix/connect issues: 커넥트 페이지 문제 해결 (#132)

* style: 커넥트 요청 시 홈 화면 뒷면 문구 및 버튼 문구 변경

수정사항
- HomeCardBack.jsx
  - 커넥트 요청 시 문구를 '커넥트 요청하였습니다'로 변경
  - 커넥트 요청 시 버튼 문구를 ‘뒤로가기로 변경
- HomecardBackBtn.js
  - 조건문을 번역 라이브러리와 호환되도록 수정
- src/translations
  - 요청 완료 문구 추가

* fix: 커넥트 목록 페이지에서 목록 깜박거림 문제 수정

수정사항
- FriendListPage.jsx, RequestConnectListPage.jsx
  - 깜박거림 문제를 해결하기 위해 useEffect + 의존성 배열을 useFocusEffect + useCallback으로 변경

* Feat/password reset and landing update: 비밀번호 재설정 페이지 구현, 랜딩페이지 문구 및 이미지 교체 (#133)

* feat: 비밀번호 재설정 페이지 수정 및 구현

수정사항
- App.jsx
  - 비밀번호 재설정 페이지를 앱 내에 등록
- api.js
  - 비밀번호 재설정 api 연결
- LoginPage.js
  - 임시로 삭제했던 '비밀번호를 까먹었어요' 문구 복원
- FindPasswordPage.js, FindPasswordStyles.js, SetPasswordPage.jsx, SetPasswordStyles.jsx
  - 비밀번호 재설정 페이지 및 스타일 구현
- src/translations/
  - 비밀번호 재설정 페이지 번역 문구 추가

* style: 랜딩페이지 문구 및 이미지 교체

수정사항
- LandingPage.jsx, landing_chat.png, landing_community.png, landing_connect.png
  - 화질 개선된 이미지로 교체
- en.json, es.json
  - 긴 문구를 짧은 문구로 변경

* Fix/multiple improvements 2: 꿀팁게시판 json명, 댓글 익명을 기본으로 변경, 프로필 수정 페이지 한줄소개, 홈 카드 채팅 연결, 알림 관련 문제 해결 (#134)

* fix: 꿀팁게시판 json명 변경 및 댓글 익명을 기본으로 변경

수정사항
- PostPage.jsx
  - 댓글 입력창의 익명 여부를 기본 체크로 변경
- src/translations/, CommunityPage.jsx, PostModifyPage.jsx, TipCommunityPage.jsx
  - tipsBoard에서 tipBoard로 json명 변경에 따른 수정

* fix: 사용자가 한줄소개를 입력 안 했을 때, 프로필 수정 페이지에서 한줄소개 입력창이 안 뜨는 문제 해결

* feat: 홈 카드에서의 채팅 연결 기능 추가

* fix: 알림 관련 문제 해결

수정사항
- api.js
  - 알림 조회 api 형식 변경에 따른 수정 (get: /notifications/)
- LoginPage.js, HomePage.js, NotificationPage.js
  - deviceId 저장 및 사용하여 알림 조회

* Fix/multiple improvements 3: 홈 카드 양끝 화살표, 북마크 및 좋아요 관련 오류 해결, 이미지 라이브러리 변경 (#135)

* style: 홈 양쪽 끝 카드의 화살표 삭제

* fix: 커뮤니티 페이지의 북마크 및 좋아요 관련 오류 해결

수정사항
- PostPage.jsx, ItemComment.jsx
  - 최초 북마크 취소 시 반영되지 않는 문제 해결
  - 게시글 좋아요 취소 시 빈 하트 아이콘이 제대로 업데이트되지 않는 문제 해결
  - 좋아요 두 번 이상 클릭할 때 생성/취소가 올바르게 반영되지 않는 문제 해결
  - 좋아요 생성한 글은 북마크 불가하던 문제 해결

* refactor: 이미지 라이브러리를 expo-image로 변경하여 캐싱이 가능하도록 개선

* fix: 커뮤니티 북마크 구분 및 채팅 북마크에서의 이름 제거

수정사항
- BookmarkedPostPage.jsx, TabBookmarkPostPage.jsx
  - 채팅 북마크와 구분하고 커뮤니티 북마크 부분만 가져오기 위한 필터 적용
  - 북마크 api 함수명 변경에 따른 수정에서 누락된 부분 보완
- BookmarkPage.jsx, Bookmark.jsx, ModalNoBookmark.jsx
  - 채팅 북마크에서 이름 제거

* style: Prettier & ESLint 적용

* Feat/landing notification onboarding improvements: 랜딩페이지 수정, 앱 내 채팅 알림 제거, 온보딩 관련 업데이트 (#139)

* style: 랜딩페이지에 강조 이미지 추가 및 작은 화면 스타일 조정

수정사항
- LandingPage.jsx, LandingStyles.jsx, chat_bubble.png, profile.png
  - 강조 이미지 추가
  - 작은 화면을 고려한 스타일 조정

* feat: 푸시알림 토큰 변경 및 앱 내 채팅 알림 제거

수정사항
- LoginPage.js
  - 푸시알림 토큰 변경
- NotificationPage.js, NotificationCard.js
  - 앱 내에 채팅 알림을 표시하지 않도록 수정

* feat: 온보딩 단계에서 사용자가 선택했던 정보 저장

수정사항
- ProfilePage.js, ProfileMbtiPage.js, ProfileHobbyPage.js, ProfileLanguagePage.js
  - 이전 페이지에서 해당 페이지로 돌아올 때 사용자가 선택했던 정보를 저장하도록 수정
- FilterCategory.js
  - 선택한 mbti와 취미/관심사를 시각적으로 보여줄 수 있도록 수정
- OnboardingContext.js
  - 언어 페이지에서 사용하는 체크박스 선택 정보를 저장하기 위해 checkLanguages 추가

* feat: 온보딩 mbti 페이지에서 선택한 mbti와 다른 mbti 선택 시 즉시 변경 기능 추가

* refactor: handleDataSave 함수 제거 및 onPress에 네비게이션 직접 연결

* Refactor/change image api to: 이름 기반 이미지 조회 API를 ID 기반 조회 API로 변경 (#141)

* refactor: 커뮤니티 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* refactor: 멤버 페이지의 마이페이지 조회 api에서 가져오던 presignURL 조회 방식을 ID 기반 조회로 변경

* refector:  멤버 및 채팅 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* fix: 프로필 이미지가 없는 사용자로 인한 채팅 세션 오류 해결 및 불필요한 주석 삭제

* refactor: 홈 세션에서 이름 기반 이미지 조회를 ID 기반 조회로 변경

* feat: 홈 카드 스와이프 제스처 추가 (#142)

* feat: 홈 카드 스와이프 제스처 추가

* style: Prettier & ESLint 적용

* fix: 빌드 오류 수정을 위한 sentry 비활성화 및 i18n 설정 추가 (#145)

* chore(eas): PR을 올렸을 때, 버그 찾기 위해 Preview 보이게 하기 (#137)

개요

- EAS Update 기능을 활용해서, PR마다 branch를 checkout해서 다 확인할
필요없이 자동으로 임시의 Preview를 생성해서 구현 확인을 쉽게하자
- .env.dev는 dev에 들어갈 env를 정의한다. (gitignore에서 제외)
- dev-deploy 파이프라인을 만들어서 preview가 development 빌드의
브랜치에서 보일 수 있도록 한다.
- i18n에서 호환성 문제로 v3를 사용하도록 설정

* refactor(community): Community 페이지에서 Refactoring 진행 (#138)

개요

- fetchPosts를 해서 가져올 때 Promise All 해서 함께 보여줄 수 있도록
변경
- ternary에서 if문으로 바꾸어서  가독성 높임
- 일부 컴포넌트 외부 컴포넌트로 추출: CommunitySection

* fix(login): 로그인 창에서 키보드 깜빡이는 문제 해결 (#140)

개요

- 로그인 창에서 이메일을 치면, 키보드의 자동 암호 부분이 깜빡 거리
- 조사결과, iPhone 14 + iOS 17에 한정해서 발생하는 에러

수정 사항

- 원인은 iPhone 14 + iOS 17에 있다는 조사결과
- 이를 해결하기 위해, 기존에 이메일 값이 계속 변경되어 재렌더링 되는
부분과 겹쳐서 더 심해보였음
- Controlled 컴포넌트를 사용하면서, email 값 관련 재렌더링이 계속 반복되면서 더
심해보였음.
- 따라서, useRef를 통해, 이메일란을 Uncontrolled Component으로 바꾼다
- 추가로 autoCorrect=false로 두어 키보드의 수정을 최소화한다.

참고

- facebook/react-native#39411

- https://dori-coding.tistory.com/entry/React-%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Controlled-Component%EC%99%80-%EB%B9%84%EC%A0%9C%EC%96%B4-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8Uncontrolled-Component

* Feat/chat improvements: 채팅 갤러리 및 카메라 기능 임시 삭제, 개인별 채팅 북마크 페이지, 채팅 나가기 기능 (#147)

* chore: 채팅 세션의 갤러리 및 카메라 기능 임시 삭제

* feat: 개인별 채팅 북마크 페이지 생성

수정사항
- App.jsx
  - 개인별 채팅 북마크 페이지를 앱 내에 등록
- api.js
  - 개인별 채팅 북마크 조회 api 추가
- ChatBookmarkPage.jsx, ChatRoomPage.jsx
  - 개인별 채팅 북마크 페이지 생성 및 채팅방 페이지와 연결

* feat: 채팅 나가기 기능 추가

수정사항
- ChatroomItem.jsx, Delete.svg, IconChatroomExit.jsx
  - 스와이프하여 채팅 나가기 기능 추가
- ChatRoomPage.jsx
  - 채팅 나가기 기능 추가
- ChattingPage.jsx
  - 채팅을 나간 후 채팅 목록 업데이트

---------

Co-authored-by: Seungho Lee <poream3387@gmail.com>

* test/from-dev-1: From Dev To Staging

* test/from-dev-2: package 테스트 오류잡기

---------

Co-authored-by: nnyouung <104901660+nnyouung@users.noreply.github.com>
Co-authored-by: Seungho Lee <poream3387@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API: Keyboard Component: TextInput Related to the TextInput component. Issue: Author Provided Repro This issue can be reproduced in Snack or an attached project. Needs: Triage 🔍
Projects
None yet
Development

No branches or pull requests