').append(e.contents().remove()));return function(e,c,u,d){function f(){o.isCurrentStateNavView(e.navViewName)&&tabsCtrl.select(e)}var v,p,g;tabsCtrl=d[0],tabCtrl=d[1],c[0].removeAttribute("title"),n(e,u,{animate:"=",onSelect:"&",onDeselect:"&",title:"@",uiSref:"@",href:"@"}),tabsCtrl.add(e),e.$on("$destroy",function(){tabsCtrl.remove(e),g.isolateScope().$destroy(),g.remove()}),s&&(e.navViewName=s,e.$on("$stateChangeSuccess",f),f()),g=angular.element("
"),g.data("$ionTabsController",tabsCtrl),g.data("$ionTabController",tabCtrl),tabsCtrl.$tabsElement.append(i(g)(e)),e.$watch("$tabSelected",function(n){v&&v.$destroy(),v=null,p&&t.leave(p),p=null,n&&(v=e.$new(),p=l.clone(),t.enter(p,tabsCtrl.$element),i(p)(v))})}}}}]).directive("ionTabNav",["$ionicNgClick",function(e){return{restrict:"E",replace:!0,require:["^ionTabs","^ionTab"],template:'
{{badge}}',scope:{title:"@",icon:"@",iconOn:"@",iconOff:"@",badge:"=",badgeStyle:"@"},compile:function(){return function(t,n,i,o){var r=o[0],a=o[1];n[0].removeAttribute("title"),t.selectTab=function(e){e.preventDefault(),r.select(a.$scope,!0)},i.ngClick||e(t,n,"selectTab($event)"),t.getIconOn=function(){return t.iconOn||t.icon},t.getIconOff=function(){return t.iconOff||t.icon},t.isTabActive=function(){return r.selectedTab()===a.$scope}}}}}]),function(e){"use strict";angular.module("ionic.ui.toggle",[]).directive("ionToggle",["$ionicGesture","$timeout",function(){return{restrict:"E",replace:!0,require:"?ngModel",scope:{ngModel:"=?",ngValue:"=?",ngChecked:"=?",ngChange:"&",ngDisabled:"=?"},transclude:!0,template:'
',compile:function(t,n){var i=t.find("input");return n.name&&i.attr("name",n.name),n.ngChecked&&i.attr("ng-checked","ngChecked"),n.ngTrueValue&&i.attr("ng-true-value",n.ngTrueValue),n.ngFalseValue&&i.attr("ng-false-value",n.ngFalseValue),function(t,n){var i,o,r,a;i=n[0].getElementsByTagName("label")[0],o=i.children[0],r=i.children[1],a=r.children[0];var c=angular.element(o).controller("ngModel");t.toggle=new e.views.Toggle({el:i,track:r,checkbox:o,handle:a,onChange:function(){c.$setViewValue(o.checked?!0:!1),t.$apply()}}),t.$on("$destroy",function(){t.toggle.destroy()})}}}}])}(window.ionic),function(e,t){"use strict";e.module("ionic.ui.touch",[]).config(["$provide",function(e){e.decorator("ngClickDirective",["$delegate",function(e){return e.shift(),e}])}]).factory("$ionicNgClick",["$parse",function(e){function n(e){t.tapElement(e.target,e)}return function(i,o,r){var a=e(r);o.on("click",function(e){i.$apply(function(){a(i,{$event:e})})}),t.on("release",n,o[0]),o.onclick=function(){},i.$on("$destroy",function(){t.off("release",n,o[0])})}}]).directive("ngClick",["$ionicNgClick",function(e){return function(t,n,i){e(t,n,i.ngClick)}}]).directive("ionStopEvent",function(){function e(e){e.stopPropagation()}return{restrict:"A",link:function(t,n,i){n.bind(i.ionStopEvent,e)}}})}(window.angular,window.ionic),function(){"use strict";angular.module("ionic.ui.viewState",["ionic.service.view","ionic.service.gesture","ngSanitize"]).directive("ionView",["$ionicViewService","$rootScope","$animate",function(){return{restrict:"EA",priority:1e3,require:"^?ionNavBar",compile:function(e){return e.addClass("pane"),e[0].removeAttribute("title"),function(e,t,n,i){if(i){var o=n.title;i.changeTitle(o,e.$navDirection),n.$observe("title",function(e){e!==o&&i.setTitle(e)}),e.$watch(n.hideBackButton,function(e){i.showBackButton(!e)}),e.$watch(n.hideNavBar,function(e){i.showBar(!e)})}}}}}]).directive("ionNavView",["$ionicViewService","$state","$compile","$controller","$animate",function(e,t,n,i,o){var r=!1,a={restrict:"E",terminal:!0,priority:2e3,transclude:!0,controller:[function(){}],compile:function(c,s,l){return function(c,s,u){function d(r){o.enabled()===!1&&(r=!1);var a=t.$current&&t.$current.locals[p];if(a!==v){var l=e.getRenderer(s,u,c);if(f&&(f.$destroy(),f=null),!a)return v=null,$.state=null,s.append(h);var d=angular.element("
").html(a.$template).contents(),m=l().register(d);l(r).leave(),v=a,$.state=a.$$state,l(r).enter(d);var b=n(d);if(f=c.$new(),f.$navDirection=m.navDirection,a.$$controller){a.$scope=f;var w=i(a.$$controller,a);s.children().data("$ngControllerController",w)}b(f);var y=e._getViewById(m.viewId)||{};f.$broadcast("$viewContentLoaded",y),g&&f.$eval(g),d=null}}var f,v,p=u[a.name]||u.name||"",g=u.onload||"",h=l(c);s.append(h);var m=s.parent().inheritedData("$uiView");p.indexOf("@")<0&&(p=p+"@"+(m?m.state.name:""));var $={name:p,state:null};s.data("$uiView",$);var b=function(){if(!r){r=!0;try{d(!0)}catch(e){throw r=!1,e}r=!1}};c.$on("$stateChangeSuccess",b),c.$on("$viewContentLoading",b),d(!1)}}};return a}]).directive("navClear",["$ionicViewService",function(e){return{restrict:"AC",link:function(t,n){n.bind("click",function(){e.nextViewOptions({disableAnimate:!0,disableBack:!0})})}}}])}(),angular.module("ionic.ui.scroll").service("$ionicScrollDelegate",e(["resize","scrollTop","scrollBottom","scrollTo","anchorScroll","rememberScrollPosition","forgetScrollPosition","scrollToRememberedPosition"])).factory("$$scrollValueCache",function(){return{}}).controller("$ionicScroll",["$scope","scrollViewOptions","$timeout","$window","$$scrollValueCache","$location","$rootScope","$document","$ionicScrollDelegate",function(e,t,n,i,o,r,a,c,s){var l=this;this._scrollViewOptions=t;var u=this.element=t.el,d=this.$element=angular.element(u),f=this.scrollView=new ionic.views.Scroll(t);(d.parent().length?d.parent():d).data("$$ionicScrollController",this);var v=s._registerInstance(this,t.delegateHandle);angular.isDefined(t.bouncing)||ionic.Platform.ready(function(){f.options.bouncing=!ionic.Platform.isAndroid()});var p=angular.bind(f,f.resize);ionic.on("resize",p,i);var g=angular.noop;e.$on("$destroy",function(){v(),ionic.off("resize",p,i),i.removeEventListener("resize",p),g(),l._rememberScrollId&&(o[l._rememberScrollId]=f.getValues())}),d.on("scroll",function(t){var n=(t.originalEvent||t).detail||{};e.$onScroll&&e.$onScroll({event:t,scrollTop:n.scrollTop||0,scrollLeft:n.scrollLeft||0})}),e.$on("$viewContentLoaded",function(e,t){if(!e.defaultPrevented){e.preventDefault();var n=t&&t.viewId;n&&(l.rememberScrollPosition(n),l.scrollToRememberedPosition(),g=a.$on("$viewHistory.viewBack",function(e,t){n===t&&l.forgetScrollPosition()}))}}),n(function(){f.run()}),this._rememberScrollId=null,this.resize=function(){return n(p)},this.scrollTop=function(e){this.resize().then(function(){f.scrollTo(0,0,!!e)})},this.scrollBottom=function(e){this.resize().then(function(){var t=f.getScrollMax();f.scrollTo(t.left,t.top,!!e)})},this.scrollTo=function(e,t,n){this.resize().then(function(){f.scrollTo(e,t,!!n)})},this.anchorScroll=function(e){this.resize().then(function(){var t=r.hash(),n=t&&c[0].getElementById(t);if(t&&n){var i=ionic.DomUtil.getPositionInParent(n,l.$element);f.scrollTo(i.left,i.top,!!e)}else f.scrollTo(0,0,!!e)})},this.rememberScrollPosition=function(e){if(!e)throw new Error("Must supply an id to remember the scroll by!");this._rememberScrollId=e},this.forgetScrollPosition=function(){delete o[this._rememberScrollId],this._rememberScrollId=null},this.scrollToRememberedPosition=function(e){var t=o[this._rememberScrollId];t&&this.resize().then(function(){f.scrollTo(+t.left,+t.top,e)})},this._setRefresher=function(e,t){var n=this.refresher=t,i=l.refresher.clientHeight||0;f.activatePullToRefresh(i,function(){n.classList.add("active"),e.$onPulling()},function(){n.classList.remove("refreshing"),n.classList.remove("active")},function(){n.classList.add("refreshing"),e.$onRefresh()})}}])}();
--------------------------------------------------------------------------------
/www/oauthcallback.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/www/templates/all-friend-list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {{friend.name}}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/www/templates/feed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 |

17 |
{{item.from.name}}
18 |
{{item.created_time | date:'MMM d, y h:mma'}}
19 |
20 |
21 |
{{item.story}}
22 |
23 |
{{item.message}}
24 |
25 |
![]()
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/www/templates/friend-list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | {{friend.name}}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/www/templates/login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |

9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/www/templates/logout.html:
--------------------------------------------------------------------------------
1 | Logout...
--------------------------------------------------------------------------------
/www/templates/menu.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/www/templates/mutual-friend-list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{friend.name}}
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/www/templates/person.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/www/templates/profile.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
{{user.name}} {{user.birthday}} {{user.gender}}
12 |
{{user.email}}
13 |
14 |
15 |
![]()
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/www/templates/share.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
18 |
19 |
{{status}}
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------