Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
coopwire-hypothesis
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
孙灵跃 Leon Sun
coopwire-hypothesis
Commits
7f3b8672
Commit
7f3b8672
authored
Aug 26, 2019
by
Kyle Keating
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move RECEIVE_REAL_TIME_UPDATES reducer logic into receiveRealTimeUpdates action
parent
077ec4d0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
41 deletions
+44
-41
real-time-updates.js
src/sidebar/store/modules/real-time-updates.js
+44
-41
No files found.
src/sidebar/store/modules/real-time-updates.js
View file @
7f3b8672
...
...
@@ -26,42 +26,11 @@ function init() {
}
const
update
=
{
RECEIVE_REAL_TIME_UPDATES
(
state
,
{
updatedAnnotations
=
[],
deletedAnnotations
=
[]
}
)
{
const
pendingUpdates
=
{
...
state
.
pendingUpdates
};
const
pendingDeletions
=
{
...
state
.
pendingDeletions
};
updatedAnnotations
.
forEach
(
ann
=>
{
// In the sidebar, only save pending updates for annotations in the
// focused group, since we only display annotations from the focused
// group and reload all annotations and discard pending updates
// when switching groups.
if
(
ann
.
group
===
groupSelectors
.
focusedGroupId
(
state
)
||
!
viewerSelectors
.
isSidebar
(
state
)
)
{
pendingUpdates
[
ann
.
id
]
=
ann
;
}
});
deletedAnnotations
.
forEach
(
ann
=>
{
// Discard any pending but not-yet-applied updates for this annotation
delete
pendingUpdates
[
ann
.
id
];
// If we already have this annotation loaded, then record a pending
// deletion. We do not check the group of the annotation here because a)
// that information is not included with deletion notifications and b)
// even if the annotation is from the current group, it might be for a
// new annotation (saved in pendingUpdates and removed above), that has
// not yet been loaded.
if
(
annotationSelectors
.
annotationExists
(
state
,
ann
.
id
))
{
pendingDeletions
[
ann
.
id
]
=
true
;
}
});
return
{
pendingUpdates
,
pendingDeletions
};
RECEIVE_REAL_TIME_UPDATES
(
state
,
action
)
{
return
{
pendingUpdates
:
{
...
action
.
pendingUpdates
},
pendingDeletions
:
{
...
action
.
pendingDeletions
},
};
},
CLEAR_PENDING_UPDATES
()
{
...
...
@@ -114,11 +83,45 @@ const actions = actionTypes(update);
* @param {Annotation[]} args.updatedAnnotations
* @param {Annotation[]} args.deletedAnnotations
*/
function
receiveRealTimeUpdates
({
updatedAnnotations
,
deletedAnnotations
})
{
return
{
type
:
actions
.
RECEIVE_REAL_TIME_UPDATES
,
updatedAnnotations
,
deletedAnnotations
,
function
receiveRealTimeUpdates
({
updatedAnnotations
=
[],
deletedAnnotations
=
[],
})
{
return
(
dispatch
,
getState
)
=>
{
const
pendingUpdates
=
{
...
getState
().
realTimeUpdates
.
pendingUpdates
};
const
pendingDeletions
=
{
...
getState
().
realTimeUpdates
.
pendingDeletions
};
updatedAnnotations
.
forEach
(
ann
=>
{
// In the sidebar, only save pending updates for annotations in the
// focused group, since we only display annotations from the focused
// group and reload all annotations and discard pending updates
// when switching groups.
if
(
ann
.
group
===
groupSelectors
.
focusedGroupId
(
getState
().
base
)
||
!
viewerSelectors
.
isSidebar
(
getState
().
base
)
)
{
pendingUpdates
[
ann
.
id
]
=
ann
;
}
});
deletedAnnotations
.
forEach
(
ann
=>
{
// Discard any pending but not-yet-applied updates for this annotation
delete
pendingUpdates
[
ann
.
id
];
// If we already have this annotation loaded, then record a pending
// deletion. We do not check the group of the annotation here because a)
// that information is not included with deletion notifications and b)
// even if the annotation is from the current group, it might be for a
// new annotation (saved in pendingUpdates and removed above), that has
// not yet been loaded.
if
(
annotationSelectors
.
annotationExists
(
getState
().
base
,
ann
.
id
))
{
pendingDeletions
[
ann
.
id
]
=
true
;
}
});
dispatch
({
type
:
actions
.
RECEIVE_REAL_TIME_UPDATES
,
pendingUpdates
,
pendingDeletions
,
});
};
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment