function applyCurrentState()

in public/components/presence-indicator/presence-indicators.js [17:66]


            function applyCurrentState(currentState) {
                if (currentState.length === 0) {
                    $scope.presences = [{ status: "free", indicatorText: "" }];
                } else {
                    $scope.presences = _.map(
                        _.uniqBy(currentState, (s) => { return s.clientId.person.email; }),
                        (pr) => {
                            const person = pr.clientId.person;

                            const presenceObject = {
                                indicatorText:
                                    (person.firstName.charAt(0) + person.lastName.charAt(0)).toUpperCase(),
                                longText: [person.firstName, person.lastName].join(" "),
                                email: person.email
                            };
                            const locations = pr.locations || [];
                            const currentLocations = pr.location ? [...locations, pr.location] : locations;
                            const editingBodyLocations = ["body", "document"];
                            const editingFurnitureLocations = ["furniture"];

                            if (editingBodyLocations.some((l) => currentLocations.includes(l)) || $scope.dontDisplayIdle) {
                                return {
                                    ...presenceObject, 
                                    status: "present",
                                    longTitle: [presenceObject.longText, "editing body"].join(" - "),
                                    shortTitle: [presenceObject.email, "editing body"].join(" - "),
                                    iconPrecedence: 1
                                };
                            } else if(editingFurnitureLocations.some((l) => currentLocations.includes(l))) {
                                // the user is not editing the body, has clicked 'Save and close'
                                return {
                                    ...presenceObject,
                                    status: "furniture",
                                    longTitle: [presenceObject.longText, "editing furniture"].join(" - "),
                                    shortTitle: [presenceObject.email, "editing furniture"].join(" - "),
                                    iconPrecedence: 2
                                };
                            } else {
                                // the user is not editing the body, has clicked 'Save and close'
                                return {
                                    ...presenceObject,
                                    status: "idle",
                                    longTitle: [presenceObject.longText, "idle"].join(" - "),
                                    shortTitle: [presenceObject.email, "idle"].join(" - "),
                                    iconPrecedence: 3
                                };
                            }
                        }).sortBy(function (pr) { return pr.iconPrecedence });
                }
            }