@melony/react 0.1.41 → 0.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -777,10 +777,15 @@ var ThreadProvider = ({
777
777
  initialThreadId: providedInitialThreadId
778
778
  }) => {
779
779
  const queryClient = reactQuery.useQueryClient();
780
+ const melonyContext = React11.useContext(MelonyContext);
780
781
  const [activeThreadId, setActiveThreadId] = nuqs.useQueryState(
781
782
  "threadId",
782
783
  nuqs.parseAsString
783
784
  );
785
+ const prevActiveThreadIdRef = React11.useRef(activeThreadId);
786
+ React11.useEffect(() => {
787
+ prevActiveThreadIdRef.current = activeThreadId;
788
+ }, [activeThreadId]);
784
789
  React11.useEffect(() => {
785
790
  if (!activeThreadId && providedInitialThreadId) {
786
791
  setActiveThreadId(providedInitialThreadId);
@@ -789,16 +794,24 @@ var ThreadProvider = ({
789
794
  const {
790
795
  data: threads = [],
791
796
  isLoading,
797
+ isFetched: isFetchedThreads,
792
798
  error: threadsError,
793
799
  refetch: refreshThreads
794
800
  } = reactQuery.useQuery({
795
801
  queryKey: ["threads"],
796
- queryFn: () => service.getThreads()
802
+ queryFn: () => service.getThreads(),
803
+ staleTime: prevActiveThreadIdRef.current === null && activeThreadId !== null ? Infinity : 0
797
804
  });
805
+ const isNewThread = React11.useMemo(() => {
806
+ if (!activeThreadId || !isFetchedThreads) return false;
807
+ return !threads.some((t) => t.id === activeThreadId);
808
+ }, [activeThreadId, threads, isFetchedThreads]);
798
809
  const { data: threadEvents = [], isLoading: isLoadingEvents } = reactQuery.useQuery({
799
810
  queryKey: ["threads", activeThreadId, "events"],
800
811
  queryFn: () => service.getEvents(activeThreadId),
801
- enabled: !!activeThreadId
812
+ enabled: !!activeThreadId,
813
+ initialData: isNewThread ? melonyContext?.events : void 0,
814
+ staleTime: isNewThread ? Infinity : 0
802
815
  });
803
816
  const createMutation = reactQuery.useMutation({
804
817
  mutationFn: async () => {