From b9ce90765d8cb7d5a04b651daf9ddc88abee8ae6 Mon Sep 17 00:00:00 2001
From: Leo Horie
Date: Mon, 20 Jun 2016 09:21:25 -0400
Subject: [PATCH] streams implementation
---
examples/threaditjs/app.js | 24 +-
examples/threaditjs/index.html | 1 +
index.js | 41 +-
request/request.js | 141 +++---
request/tests/index.html | 3 +-
request/tests/test-jsonp.js | 14 +-
request/tests/test-xhr.js | 80 ++--
util/prop.js | 8 -
util/stream.js | 159 +++++++
util/tests/index.html | 5 +-
util/tests/test-prop.js | 16 -
util/tests/test-stream.js | 779 +++++++++++++++++++++++++++++++++
12 files changed, 1104 insertions(+), 167 deletions(-)
delete mode 100644 util/prop.js
create mode 100644 util/stream.js
delete mode 100644 util/tests/test-prop.js
create mode 100644 util/tests/test-stream.js
diff --git a/examples/threaditjs/app.js b/examples/threaditjs/app.js
index 05085fe6..48384c99 100644
--- a/examples/threaditjs/app.js
+++ b/examples/threaditjs/app.js
@@ -1,11 +1,15 @@
T.time("Setup");
-var request = require("../../request/request")(window, Promise).ajax
+var Stream = require("../../util/stream")
+var requestService = require("../../request/request")(window, Stream)
+var request = requestService.xhr
var m = require("../../render/hyperscript")
var trust = require("../../render/trust")
var renderer = require("../../render/render")(window)
var router = require("../../router/router")(window)
+requestService.setCompletionCallback(run)
+
//API calls
var api = {
home : function() {
@@ -14,7 +18,7 @@ var api = {
},
thread : function(id) {
T.timeEnd("Setup")
- return request({method: "GET", url: T.apiUrl + "/comments/" + id}).then(T.transformResponse)
+ return request({method: "GET", url: T.apiUrl + "/comments/" + id}).map(T.transformResponse)
},
newThread : function(text) {
return request({method: "POST", url: T.apiUrl + "/threads/create",data: {text: text}})
@@ -27,29 +31,27 @@ var api = {
var threads = [], current = null, loaded = false, error = false, notFound = false
function loadThreads() {
loaded = false
- api.home().then(function(response) {
+ api.home().map(function(response) {
document.title = "ThreaditJS: Mithril | Home"
threads = response.data
loaded = true
- }, function() {
+ }).catch(function() {
loaded = error = true
})
- .then(run)
}
function loadThread(id) {
loaded = false
notFound = false
- api.thread(id).then(function(response) {
+ api.thread(id).map(function(response) {
document.title = "ThreaditJS: Mithril | " + T.trimTitle(response.root.text);
loaded = true
current = response
- }, function(response) {
+ }).catch(function(response) {
loaded = true
if (response.status === 404) notFound = true
else error = true
})
- .then(run)
}
function unloadThread() {
current = null
@@ -57,11 +59,10 @@ function unloadThread() {
function createThread() {
var threadText = document.getElementById("threadText")
- api.newThread(threadText.value).then(function(response) {
+ api.newThread(threadText.value).map(function(response) {
threadText.value = "";
threads.push(response.data);
})
- .then(run)
return false
}
@@ -72,12 +73,11 @@ function showReplying(vnode) {
}
function submitComment(vnode) {
- api.newComment(vnode.state.newComment, vnode.attrs.node.id).then(function(response) {
+ api.newComment(vnode.state.newComment, vnode.attrs.node.id).map(function(response) {
vnode.state.newComment = ""
vnode.state.replying = false
vnode.attrs.node.children.push(response.data)
})
- .then(run)
return false
}
diff --git a/examples/threaditjs/index.html b/examples/threaditjs/index.html
index b59ffea7..53249dfa 100644
--- a/examples/threaditjs/index.html
+++ b/examples/threaditjs/index.html
@@ -18,6 +18,7 @@
+
+
-
-
+
+