| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import App from '../../../base'
- import { react2angular } from 'react2angular'
- import cloneDeep from 'lodash/cloneDeep'
- import ShareProjectModal from '../components/share-project-modal'
- import { listProjectInvites, listProjectMembers } from '../utils/api'
- App.component('shareProjectModal', react2angular(ShareProjectModal))
- export default App.controller('ReactShareProjectModalController', function(
- $scope,
- eventTracking,
- ide
- ) {
- $scope.isAdmin = false
- $scope.show = false
- let deregisterProjectWatch
- // deep watch $scope.project for changes
- function registerProjectWatch() {
- deregisterProjectWatch = $scope.$watch(
- 'project',
- project => {
- $scope.clonedProject = cloneDeep(project)
- },
- true
- )
- }
- $scope.handleHide = () => {
- $scope.$applyAsync(() => {
- $scope.show = false
- if (deregisterProjectWatch) {
- deregisterProjectWatch()
- }
- })
- }
- $scope.openShareProjectModal = isAdmin => {
- eventTracking.sendMBOnce('ide-open-share-modal-once')
- $scope.$applyAsync(() => {
- registerProjectWatch()
- $scope.isAdmin = isAdmin
- $scope.show = true
- })
- }
- // update $scope.project with new data
- $scope.updateProject = data => {
- if (!$scope.project) {
- return
- }
- $scope.$applyAsync(() => {
- Object.assign($scope.project, data)
- })
- }
- /* tokens */
- ide.socket.on('project:tokens:changed', data => {
- if (data.tokens != null) {
- ide.$scope.project.tokens = data.tokens
- $scope.$digest()
- }
- })
- ide.socket.on('project:membership:changed', data => {
- if (data.members) {
- listProjectMembers($scope.project)
- .then(({ members }) => {
- if (members) {
- $scope.$applyAsync(() => {
- $scope.project.members = members
- })
- }
- })
- .catch(() => {
- console.error('Error fetching members for project')
- })
- }
- if (data.invites) {
- listProjectInvites($scope.project)
- .then(({ invites }) => {
- if (invites) {
- $scope.$applyAsync(() => {
- $scope.project.invites = invites
- })
- }
- })
- .catch(() => {
- console.error('Error fetching invites for project')
- })
- }
- })
- })
|