Nexters / flass

flass
MIT License
4 stars 1 forks source link

버그 요소들 정리 #79

Open zeroFruit opened 7 years ago

zeroFruit commented 7 years ago
  1. [x] 1. 최초로 플래스 사이트 접속시 api /users 에서 401 응답을 돌려줌
  2. [x] 2. detail/:id 경로에서 invalid한 id로 접속하면 unauthorized 응답을 받으며 무한 루프에 빠짐
  3. [x] 3. 두번째 버그를 해결하였는데 일단 로그인 화면으로 돌아가는 방식으로 임시로 해결, 혜민이가 오류페이지 디자인해주면 추가하기
  4. [x] 4. 컨트롤러 바 클릭하면 그 시간대로 이동이 안됨
  5. [x] 5. 학생용 강의 시청화면에서 로그아웃버튼 핸들러 추가해야함
  6. [x] 6. 문제가 하나도 없는 강의의 경우 탐색가능시간이 0 임 => 탐색가능시간을 영상길이만큼 늘려줘야한다
  7. [x] 7. 댓글 수정
  8. [x] 8. 좋아요 숫자, 하트 색깔
  9. [x] 9. 플레이어 재생바 굵기 호버하면 굵게 바뀌게하기
  10. [x] 10. 그리드화면에서 삭제버튼 추가하기
  11. [ ] 11. 강의정보창에 "링크" 표시해놓기.
  12. [ ] 12. "영상을 끝까지 봐야지 문제풀었다는 정보가 등록된다"라는 텍스트 영상에 추가해놓기.

9월13일 테스트


9월 17일 테스트


10월 7일 테스트


10월 10일 테스트

google login 클릭한 후 구글 로그인하지 않고 창을 닫으면 "flass 잠시만 기다려주세요" 그대로 떠있음 shorten 링크 타고 들어가서 (클래스팅 로그인 안되어있을 경우) 클래스팅 로그인하면 shorten 링크로 가는 게 아니라 홈화면으로 간다


10월 14일

*동영상 업로드 시에 문제 넣을 때, 동영상 시간 바 hover효과가 없어! 바가 거의 안보여서 불편합니다! 아이들 동영상 시청할 때처럼만 바꿔주면 좋겠어요~~~~

BoBeenLee commented 7 years ago

@zeroFruit 감싸진 컴포넌트 라이프사이클 메소드랑 충돌된다는게 어떤 부분에서 충돌났는지 알수 있을까요??

zeroFruit commented 7 years ago

@BoBinLee

// HOC.js
export default function(ComposedComponent) {
    class ExtendsComponent extends Component {
        ...
            componentWillReceiveProps(nextProps) {
                /* CODE1 */
            }
    }
}

// Component1.js
class Component1 extends Component {
    componentWillReceiveProps(nextProps) {
            /* CODE2 */
    }
}
zeroFruit commented 7 years ago

@P1T1J1 @BoBinLee

9월13일 테스트 테스트할 때 학생용 링크로 디테일 페이지로 안넘어가졌는데 확인해보니까 세션체크 방식에 문제가 있었더라고.. 문제점하고 해결책 공유합니다!

기존 세션 체크 방식문제점 및 해결

문제점

// SessionCheckBeforeRoute.js
class SessionCheckBeforeRoute extends Component {
  componentWillMount() {
    this.props.sessionCheck();
  }

  render() {
    const {
      sessionValid,
      isSessionChecking
    } = this.props;

    if (isSessionChecking) {
      // 세션 체킹 중이라는 페이지 렌더
    }

    if (sessionValid) {
      // 원래 라우트와 컴포넌트로 렌더
    } else {
      // 세션이 유효하지 않기 때문에 로그인 페이지로 리다이렉트
    }
  }
}
// modules/Sign/sagas.js
function* checkSession() {
  try {
    // default - isSessionChecking: false, sessionValid: false
    yield put({ type: CHECK_SESSION_START });   // isSessionChecking: true, sessionValid: false

    ...

    yield put({ type: CHECK_SESSION_SUCCESS }); // isSessionChecking: true, sessionValid: true
    yield put({ type: CHECK_SESSION_FIN });     // isSessionChecking: false, sessionValid: true
  } catch (error) {
    yield put({ type: CHECK_SESSION_FAIL });    // isSessionChecking: true, sessionValid: false
    yield put({ type: CHECK_SESSION_FIN });     // isSessionChecking: false, sessionValid: false
  }
}

해결

class SessionCheckBeforeRoute extends Component {
  constructor(props) {
    super(props);

    this.state = {
      sessionValid: false,
      isSessionChecking: true // 처음에는 항상 세션 체크 중이라고 생각한다!
    };
  }
  componentWillMount() {
    this.props.sessionCheck();
  }

  componentWillReceiveProps(nextProps) {
    const { sessionValid, isSessionChecking } = nextProps;
    this.setState({ sessionValid, isSessionChecking });
  }

  render() {
    const {
      ...
    } = this.props;
    const {
      sessionValid,
      isSessionChecking
    } = this.state;

    if (isSessionChecking) { // 일단 무조건 여기에 걸린다.
      // 세션 체킹 중이라는 페이지 렌더
    }

    if (sessionValid) {
      // 원래 라우트와 컴포넌트로 렌더
    } else {
      // 세션이 유효하지 않기 때문에 로그인 페이지로 리다이렉트
    }
  }
}