huir0 / Hexagonian

0 stars 0 forks source link

[Feat/create] Qna post기능 구현 #97

Closed Ko-Eunseo closed 7 months ago

Ko-Eunseo commented 7 months ago
Ko-Eunseo commented 7 months ago

todo

question 생성하기 기능 구현했으나 content가 이상함. [{"insert":"content가 이상함\n"}] 이런식으로 데이터가 들어온다.

Multifile로 구성해서 보내보았으나 files만 서버에 데이터가 들어오고 body가 들어오지 않음. 현재 아래와 같이 구현해놓은 상황.

  Future<void> createQuestion({
    required String title,
    required String content,
    required List<String> tag,
    required String userId,
  }) async {
    try {
      final body = <String, dynamic>{
        "title": title,
        "user": userId,
        "tag": tag,
        "content": content
      };
      await pb.collection('qna').create(
            body: body,
            // files: [
            //   http.MultipartFile.fromString(
            //     'content',
            //     content,
            //   ),
            // ],
          );
    } catch (_) {
      rethrow;
    }
  }
Ko-Eunseo commented 7 months ago

찾아보니 지런 형태로 들어오는 게 정상인듯. request를 받아와서 포매팅을 해야하는 것 같음. 포매팅을 하는 건 비효율적으로 보여서(포켓베이스에서도 richText를 지원하는데 굳이 싶어서) html 태그로 변환해서 request하는 방식으로 수정함.

delta to html encoder 만들어서 활용

                Delta delta = _controller!.document.toDelta();

                List<Map<String, dynamic>> deltaList = delta.map((operation) {
                  return {
                    "insert": operation.value,
                  };
                }).toList();

                var content = deltaToHtmlEncoder(deltaList);

                ref.read(createQnaProvider.notifier).setQna(
                      title: _headerController.value.text,
                      content: content,
                      tag: tagList,
                      userId: userId,
                    );

이미지는 따로 다루지 않았음.