From 1f74ac8df9b89fbad721ca23dc1e68df4290b445 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Sat, 4 Apr 2015 06:21:59 +0300 Subject: [PATCH] Push disposables out of the backend --- modules/backends/HTML5.js | 13 ++++++------- modules/configureDragDrop.js | 6 +++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/modules/backends/HTML5.js b/modules/backends/HTML5.js index e32a4715e2..d60a6d916b 100644 --- a/modules/backends/HTML5.js +++ b/modules/backends/HTML5.js @@ -1,5 +1,4 @@ import { DragSource } from 'dnd-core'; -import { Disposable } from 'rx-lite'; import NativeTypes from '../NativeTypes'; import EnterLeaveCounter from '../utils/EnterLeaveCounter'; import invariant from 'react/lib/invariant'; @@ -398,9 +397,9 @@ export default class HTML5Backend { connectSourcePreviewNode(sourceId, node) { this.sourcePreviewNodes[sourceId] = node; - return new Disposable(() => { + return () => { delete this.sourcePreviewNodes[sourceId]; - }); + }; } connectSourceNode(sourceId, node) { @@ -409,10 +408,10 @@ export default class HTML5Backend { node.setAttribute('draggable', true); node.addEventListener('dragstart', handleDragStart); - return new Disposable(() => { + return () => { node.removeEventListener('dragstart', handleDragStart); node.setAttribute('draggable', false); - }); + }; } connectTargetNode(targetId, node) { @@ -424,10 +423,10 @@ export default class HTML5Backend { node.addEventListener('dragover', handleDragOver); node.addEventListener('drop', handleDrop); - return new Disposable(() => { + return () => { node.removeEventListener('dragenter', handleDragEnter); node.removeEventListener('dragover', handleDragOver); node.removeEventListener('drop', handleDrop); - }); + }; } } \ No newline at end of file diff --git a/modules/configureDragDrop.js b/modules/configureDragDrop.js index 3f9ee8099e..5211064be8 100644 --- a/modules/configureDragDrop.js +++ b/modules/configureDragDrop.js @@ -1,5 +1,5 @@ import React, { Component, PropTypes, findDOMNode } from 'react'; -import { CompositeDisposable, SerialDisposable } from 'rx-lite'; +import { CompositeDisposable, SerialDisposable, Disposable } from 'rx-lite'; import ComponentDragSource from './ComponentDragSource'; import ComponentDropTarget from './ComponentDropTarget'; import shallowEqual from './utils/shallowEqual'; @@ -235,8 +235,8 @@ export default function configureDragDrop(InnerComponent, { serialDisposable.setDisposable(null); if (nextNode) { - const nextDisposable = connectBackend(handlerId, nextNode); - serialDisposable.setDisposable(nextDisposable); + const dispose = connectBackend(handlerId, nextNode); + serialDisposable.setDisposable(new Disposable(dispose)); currentNode = nextNode; } };