feat: clean old junk

This commit is contained in:
Kingkor Roy Tirtho
2023-02-10 19:08:30 +06:00
parent 0af8190cf8
commit f632fe8403
383 changed files with 0 additions and 21486 deletions
@@ -1,141 +0,0 @@
// ignore_for_file: invalid_use_of_protected_member
import 'package:fl_query/fl_query.dart';
import 'package:fl_query_hooks/src/utils.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
InfiniteQuery<T, Outside, PageParam>
useInfiniteQuery<T extends Object, Outside, PageParam extends Object>({
required InfiniteQueryJob<T, Outside, PageParam> job,
required Outside externalData,
/// Called when the query returns new data, on query
/// refetch or query gets expired
final InfiniteQueryListeners<T, PageParam>? onData,
/// Called when the query returns error
final InfiniteQueryListeners<dynamic, PageParam>? onError,
List<Object?>? keys,
}) {
final context = useContext();
final mounted = useIsMounted();
final update = useForceUpdate();
final QueryBowl queryBowl = QueryBowl.of(context);
final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []);
final infiniteQuery = useRef(
useMemoized(
() => queryBowl.addInfiniteQuery<T, Outside, PageParam>(
job,
externalData: externalData,
key: uKey,
onData: onData,
onError: onError,
),
[],
),
);
final oldJob = usePrevious(job);
final oldExternalData = usePrevious(externalData);
final oldOnData = usePrevious(onData);
final oldOnError = usePrevious(onError);
final init = useCallback(([T? previousData]) {
final hasExternalDataChanged = !isShallowEqual(
infiniteQuery.value.externalData,
infiniteQuery.value.prevUsedExternalData);
infiniteQuery.value = queryBowl.addInfiniteQuery<T, Outside, PageParam>(
job,
externalData: externalData,
key: uKey,
onData: onData,
onError: onError,
);
update();
if (infiniteQuery.value.fetched && hasExternalDataChanged) {
infiniteQuery.value.refetchPages();
} else if (!infiniteQuery.value.fetched) {
infiniteQuery.value.fetch();
}
}, [
queryBowl,
infiniteQuery.value,
uKey,
job,
externalData,
onData,
onError,
]);
final disposeQuery = useCallback(() {
infiniteQuery.value.unmount(uKey);
if (onData != null) infiniteQuery.value.removeDataListener(onData);
if (onError != null) infiniteQuery.value.removeErrorListener(onError);
}, [
infiniteQuery.value,
uKey,
onData,
onError,
]);
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((_) {
init();
QueryBowl.of(context).onInfiniteQueriesUpdate<T, Outside, PageParam>(
(newInfiniteQuery) async {
if (newInfiniteQuery.queryKey != job.queryKey || !mounted()) return;
infiniteQuery.value = newInfiniteQuery;
if (!infiniteQuery.value.fetched &&
infiniteQuery.value.isCachedData) {
await infiniteQuery.value.refetchPages();
}
update();
},
);
});
return disposeQuery;
}, []);
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((_) {
final hasOnErrorChanged = oldOnError != onError && oldOnError != null;
final hasOnDataChanged = oldOnData != onData && oldOnData != null;
if (oldJob != null && oldJob.queryKey != job.queryKey) {
disposeQuery();
init();
} else if (!isShallowEqual(oldExternalData, externalData)) {
if (job.refetchOnExternalDataChange ??
queryBowl.refetchOnExternalDataChange) {
QueryBowl.of(context).addInfiniteQuery(
job,
externalData: externalData,
key: uKey,
onData: onData,
onError: onError,
)..refetchPages();
} else {
QueryBowl.of(context)
.getQuery(job.queryKey)
?.setExternalData(externalData);
}
if (hasOnDataChanged) infiniteQuery.value.removeDataListener(oldOnData);
if (hasOnErrorChanged)
infiniteQuery.value.removeErrorListener(oldOnError);
} else {
if (hasOnDataChanged) {
infiniteQuery.value.removeDataListener(oldOnData);
if (onData != null) infiniteQuery.value.addDataListener(onData);
}
if (hasOnErrorChanged) {
infiniteQuery.value.removeErrorListener(oldOnError);
if (onError != null) infiniteQuery.value.addErrorListener(onError);
}
}
});
return null;
});
return infiniteQuery.value;
}
@@ -1,101 +0,0 @@
import 'package:fl_query/fl_query.dart';
import 'package:fl_query_hooks/src/utils.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
Mutation<T, V> useMutation<T extends Object, V>({
required MutationJob<T, V> job,
/// Called when the query returns new data, on query
/// refetch or query gets expired
MutationListener<T, V>? onData,
/// Called when the query returns error
MutationListener<dynamic, V>? onError,
/// called right before the mutation is about to run
///
/// perfect scenario for doing optimistic updates
MutationListenerReturnable<V, dynamic>? onMutate,
List<Object?>? keys,
}) {
final context = useContext();
final mounted = useIsMounted();
final update = useForceUpdate();
final QueryBowl queryBowl = QueryBowl.of(context);
final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []);
final mutation = useRef(
useMemoized(
() => queryBowl.addMutation<T, V>(
job,
onData: onData,
onError: onError,
onMutate: onMutate,
key: uKey,
),
[],
),
);
final init = useCallback(() {
mutation.value = queryBowl.addMutation<T, V>(
job,
onData: onData,
onError: onError,
onMutate: onMutate,
key: uKey,
);
update();
}, [mutation.value, job, onData, onError, onMutate, uKey]);
final disposeMutation = useCallback(() {
mutation.value.unmount(uKey);
if (onData != null) mutation.value.removeDataListener(onData);
if (onError != null) mutation.value.removeErrorListener(onError);
if (onMutate != null) mutation.value.removeMutateListener(onMutate);
}, [mutation.value, onData, onError, onMutate]);
final oldJob = usePrevious(job);
final oldOnData = usePrevious(onData);
final oldOnError = usePrevious(onError);
final oldOnMutate = usePrevious(onMutate);
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((_) {
init();
QueryBowl.of(context).onMutationsUpdate<T, V>(
(newMutation) {
if (newMutation.mutationKey != job.mutationKey || !mounted()) return;
mutation.value = newMutation;
update();
},
);
});
return disposeMutation;
}, []);
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (oldJob != null && oldJob.mutationKey != job.mutationKey) {
disposeMutation();
init();
} else {
if (oldOnData != onData && oldOnData != null) {
mutation.value.removeDataListener(oldOnData);
if (onData != null) mutation.value.addDataListener(onData);
}
if (oldOnError != onError && oldOnError != null) {
mutation.value.removeErrorListener(oldOnError);
if (onError != null) mutation.value.addErrorListener(onError);
}
if (oldOnMutate != onMutate && oldOnMutate != null) {
mutation.value.removeMutateListener(oldOnMutate);
if (onMutate != null) mutation.value.addMutateListener(onMutate);
}
}
});
return null;
});
return mutation.value;
}
@@ -1,134 +0,0 @@
// ignore_for_file: invalid_use_of_protected_member
import 'package:fl_query/fl_query.dart';
import 'package:fl_query_hooks/src/utils.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
Query<T, Outside> useQuery<T extends Object, Outside>({
required QueryJob<T, Outside> job,
required Outside externalData,
/// Called when the query returns new data, on query
/// refetch or query gets expired
QueryListener<T>? onData,
/// Called when the query returns error
QueryListener<dynamic>? onError,
List<Object?>? keys,
}) {
final mounted = useIsMounted();
final update = useForceUpdate();
final context = useContext();
final QueryBowl queryBowl = QueryBowl.of(context);
final ValueKey<String> uKey = useMemoized(() => ValueKey(uuid.v4()), []);
final query = useRef(
useMemoized(
() => queryBowl.addQuery<T, Outside>(
job,
externalData: externalData,
key: uKey,
onData: onData,
onError: onError,
),
[],
),
);
final oldJob = usePrevious(job);
final oldExternalData = usePrevious(externalData);
final oldOnData = usePrevious(onData);
final oldOnError = usePrevious(onError);
final init = useCallback(([T? previousData]) {
final hasExternalDataChanged = !isShallowEqual(
query.value.externalData,
query.value.prevUsedExternalData,
);
query.value = queryBowl.addQuery<T, Outside>(
job,
externalData: externalData,
previousData: previousData,
key: uKey,
onData: onData,
onError: onError,
);
update();
if (query.value.fetched && hasExternalDataChanged) {
query.value.refetch();
} else if (!query.value.fetched) {
query.value.fetch();
}
}, [queryBowl, query.value, uKey, onData, onError, job, externalData]);
final disposeQuery = useCallback(() {
query.value.unmount(uKey);
if (onData != null) query.value.removeDataListener(onData);
if (onError != null) query.value.removeErrorListener(onError);
}, [query.value, onData, onError, uKey]);
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((_) {
init();
QueryBowl.of(context).onQueriesUpdate<T, Outside>(
(newQuery) {
if (newQuery.queryKey != job.queryKey || !mounted()) return;
query.value = newQuery;
update();
},
);
});
return disposeQuery;
}, []);
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((_) {
final hasOnErrorChanged = oldOnError != onError && oldOnError != null;
final hasOnDataChanged = oldOnData != onData && oldOnData != null;
if (oldJob != null && oldJob.queryKey != job.queryKey) {
disposeQuery();
/// setting the new query's initial data as prev query's data
/// when [job.keepPreviousData] is true and both are dynamic
if (oldJob.isDynamic &&
job.isDynamic &&
oldJob.keepPreviousData == true &&
job.keepPreviousData == true) {
init(query.value.data);
} else {
init();
}
} else if (!isShallowEqual(oldExternalData, externalData)) {
if (job.refetchOnExternalDataChange ??
queryBowl.refetchOnExternalDataChange) {
QueryBowl.of(context).fetchQuery(
job,
externalData: externalData,
onData: onData,
onError: onError,
key: uKey,
);
} else {
QueryBowl.of(context)
.getQuery(job.queryKey)
?.setExternalData(externalData);
}
if (hasOnDataChanged) query.value.removeDataListener(oldOnData);
if (hasOnErrorChanged) query.value.removeErrorListener(oldOnError);
} else {
if (hasOnDataChanged) {
query.value.removeDataListener(oldOnData);
if (onData != null) query.value.addDataListener(onData);
}
if (hasOnErrorChanged) {
query.value.removeErrorListener(oldOnError);
if (onError != null) query.value.addErrorListener(onError);
}
}
});
return null;
});
return query.value;
}
@@ -1,9 +0,0 @@
import 'package:fl_query/fl_query.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
/// Simple hook based shorthand for [QueryBowl.of(context)]
QueryBowl useQueryBowl() {
final context = useContext();
return QueryBowl.of(context);
}
@@ -1,18 +0,0 @@
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:uuid/uuid.dart';
const uuid = Uuid();
// a flutter hook that can force update the ui
//
// Usage:
// final forceUpdate = useForceUpdate();
// forceUpdate();
useForceUpdate() {
final state = useState(false);
final isMounted = useIsMounted();
return () {
if (isMounted()) state.value = !state.value;
};
}