Commit 7c3c01ce authored by Marek Veselý's avatar Marek Veselý
Browse files

Merge branch 'fix-exercise-states-error' into 'main'

fix: replace exerciseSubscription with invalidate

See merge request inject/frontend!671
parents 8f7016d3 3909ee35
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -33,8 +33,7 @@ const ManagingExerciseList: FC<ManagingExerciseListProps> = ({ className }) => {
    showOnDemand: true,
    showOnDemand: true,
  })
  })
  const exerciseFilter = (exercise: Exercise) => {
  const exerciseFilter = (exercise: Exercise) => {
    const { onDemand } = exercise
    if (exercise.onDemand) {
    if (onDemand) {
      return filters.showOnDemand
      return filters.showOnDemand
    }
    }
    const status = synchronousExerciseState(exercise).status
    const status = synchronousExerciseState(exercise).status
@@ -134,7 +133,7 @@ const ManagingExerciseList: FC<ManagingExerciseListProps> = ({ className }) => {
      <ExerciseList
      <ExerciseList
        className={className}
        className={className}
        type='managing'
        type='managing'
        filter={exercise => exerciseFilter(exercise)}
        exerciseFilter={exercise => exerciseFilter(exercise)}
        assignmentLink={exercise => ({
        assignmentLink={exercise => ({
          to: ExerciseAssignmentRoute.to,
          to: ExerciseAssignmentRoute.to,
          params: { exerciseId: exercise.id },
          params: { exerciseId: exercise.id },
+18 −6
Original line number Original line Diff line number Diff line
@@ -69,7 +69,7 @@ const running = css`


export const ExerciseList: FC<
export const ExerciseList: FC<
  {
  {
    filter?: (exercise: Exercise) => boolean
    exerciseFilter?: (exercise: Exercise) => boolean
    isSelected?: (exercise: Exercise) => boolean
    isSelected?: (exercise: Exercise) => boolean
    className?: string
    className?: string
  } & (
  } & (
@@ -84,13 +84,25 @@ export const ExerciseList: FC<
        assignmentLink: (exercise: Exercise) => NavigateOptions
        assignmentLink: (exercise: Exercise) => NavigateOptions
      }
      }
  )
  )
> = ({ filter, isSelected, onSelect, type, className, assignmentLink }) => {
> = ({
  exerciseFilter,
  isSelected,
  onSelect,
  type,
  className,
  assignmentLink,
}) => {
  const [{ data, fetching: loading }] = useExercisesSubscription()
  const [{ data, fetching: loading }] = useExercisesSubscription()


  const exercises = useMemo(
  const exercises = (() => {
    () => (filter ? data?.exercises.filter(filter) : data?.exercises) || [],
    if (loading || !data?.exercises) {
    [data?.exercises, filter]
      return []
  )
    }
    if (exerciseFilter) {
      return data.exercises.filter(exercise => exerciseFilter(exercise))
    }
    return data.exercises
  })()


  const columns: Column<Exercise>[] = useMemo(() => {
  const columns: Column<Exercise>[] = useMemo(() => {
    const columns: Column<Exercise>[] = [
    const columns: Column<Exercise>[] = [
+1 −1
Original line number Original line Diff line number Diff line
@@ -71,7 +71,7 @@ const CopyAssignment: FC<CopyAssignmentProps> = ({ exerciseId, teamCount }) => {
          </Callout>
          </Callout>
          <div className={wrapper}>
          <div className={wrapper}>
            <ExerciseList
            <ExerciseList
              filter={exercise =>
              exerciseFilter={exercise =>
                exercise.id !== exerciseId &&
                exercise.id !== exerciseId &&
                exercise.teams.length === teamCount
                exercise.teams.length === teamCount
              }
              }
+2 −2

File changed.

Preview size limit exceeded, changes collapsed.

+3 −3
Original line number Original line Diff line number Diff line
@@ -72,7 +72,7 @@ export const EmailThreadsSubscription = graphql(


export const ExerciseStateSubscription = graphql(
export const ExerciseStateSubscription = graphql(
  `
  `
    subscription exerciseState($teamIds: [ID!]!) {
    subscription ExerciseStateSubscription($teamIds: [ID!]!) {
      exerciseState(teamIds: $teamIds) {
      exerciseState(teamIds: $teamIds) {
        state {
        state {
          ...ExerciseState
          ...ExerciseState
@@ -83,9 +83,9 @@ export const ExerciseStateSubscription = graphql(
  [Fragments.ExerciseState]
  [Fragments.ExerciseState]
)
)


export const exercises = graphql(
export const ExercisesSubscription = graphql(
  `
  `
    subscription exercises {
    subscription ExercisesSubscription {
      exercisesSubscription {
      exercisesSubscription {
        exercise {
        exercise {
          ...Exercise
          ...Exercise
Loading