Skip to content

Commit b369ab0

Browse files
authored
Merge pull request #65 from ahasnawi/internal-deeplinking
Internal deeplinking
2 parents 62f2773 + af1608e commit b369ab0

File tree

12 files changed

+50
-25
lines changed

12 files changed

+50
-25
lines changed

control/content/controllers/content.home.controller.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
buildfire.analytics.unregisterEvent(`DOCUMENT_${item.id}_OPENED`);
8585
DataStore.deleteById(item.id, TAG_NAMES.SEMINAR_ITEMS).then(function (result) {
8686
ContentHome.items.splice(_index, 1);
87+
var searchOptionUserData = {};
8788
searchOptionUserData.filter ={"$or": [{"$json.itemID": {"$eq": item.id}}]};
8889
var success = function(data) {
8990
for (var note = 0; note < data.length; note++) {

control/content/controllers/content.item.controller.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@
235235
ContentItem.item.data.deepLinkUrl = Buildfire.deeplink.createLink({ id: result.id });
236236
}
237237
updateMasterItem(ContentItem.item);
238-
}, errorItem = function () {
238+
}, errorItem = function (err) {
239239
Buildfire.spinner.hide();
240240
throw console.error('There was a problem fetching your data', err);
241241
};
@@ -312,7 +312,7 @@
312312
} else if (!ContentItem.isNewItemInserted) {
313313
ContentItem.addNewItem();
314314
}
315-
}, 300);
315+
}, 500);
316316
}
317317
};
318318

widget/app.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
buildfire.history.push(currentView, { showItemInTitlebar: true })
2727

2828
var newScope = $rootScope.$new();
29-
var _newView = '<div id="' + view.template + '" ><div class="slide content" data-back-img="{{itemDetailbackgroundImage}}" ng-include="\'templates/' + view.template + '.html\'"></div></div>';
29+
var _newView = '<div id="' + view.template + '" class="singleItem" ><div class="slide content" data-back-img="{{itemDetailbackgroundImage}}" ng-include="\'templates/' + view.template + '.html\'"></div></div>';
3030
var parTpl = $compile(_newView)(newScope);
3131

3232
$(elem).append(parTpl);
3333
views++;
3434

3535
} else if (type === 'POP') {
3636

37-
var _elToRemove = $(elem).find('#' + view.template),
37+
var _elToRemove = $('.singleItem').last(),
3838
_child = _elToRemove.children("div").eq(0);
3939

4040
_child.addClass("ng-leave ng-leave-active");
@@ -158,11 +158,17 @@
158158
.run(['ViewStack', '$rootScope', function (ViewStack, $rootScope) {
159159
buildfire.navigation.onBackButtonClick = function () {
160160
if (ViewStack.hasViews()) {
161-
if (ViewStack.getCurrentView().template == 'Item') {
161+
if (ViewStack.getPreviousView().params && ViewStack.getPreviousView().params.itemId) {
162+
buildfire.messaging.sendMessageToControl({
163+
id: ViewStack.getPreviousView().params.itemId,
164+
type: 'OpenItem'
165+
});
166+
} else {
162167
buildfire.messaging.sendMessageToControl({
163168
type: 'BackToHome'
164169
});
165170
}
171+
buildfire.history.pop();
166172
ViewStack.pop();
167173
} else {
168174
buildfire.navigation._goBackOne();

widget/app.services.js

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -245,24 +245,16 @@
245245
}])
246246
.factory('ViewStack', ['$rootScope', function ($rootScope) {
247247
var views = [];
248-
var viewMap = {};
249248
return {
250249
push: function (view) {
251-
console.log(">>>>>>>>>>>>", view, viewMap);
252-
if (viewMap[view.template]) {
253-
this.pop();
254-
}
255-
else {
256-
viewMap[view.template] = 1;
257-
views.push(view);
258-
$rootScope.$broadcast('VIEW_CHANGED', 'PUSH', view);
259-
}
250+
console.log(">>>>>>>>>>>>", view);
251+
views.push(view);
252+
$rootScope.$broadcast('VIEW_CHANGED', 'PUSH', view);
260253
return view;
261254
},
262255
pop: function () {
263256
$rootScope.$broadcast('BEFORE_POP', views[views.length - 1]);
264257
var view = views.pop();
265-
delete viewMap[view.template];
266258
$rootScope.$broadcast('VIEW_CHANGED', 'POP', view);
267259
return view;
268260
},
@@ -275,7 +267,6 @@
275267
popAllViews: function (noAnimation) {
276268
$rootScope.$broadcast('VIEW_CHANGED', 'POPALL', views,noAnimation);
277269
views = [];
278-
viewMap = {};
279270
},
280271
getPreviousView: function () {
281272
return views.length && views[views.length - 2] || {};

widget/controllers/widget.home.controller.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,31 @@
3838
}
3939
);
4040

41+
buildfire.deeplink.onUpdate((deeplinkData) => {
42+
var notFound = function(){
43+
var text = WidgetHome.languages.deeplinkNoteNotFound ? WidgetHome.languages.deeplinkNoteNotFound:'Item does not exist!';
44+
buildfire.dialog.toast({
45+
message: text
46+
});
47+
}
48+
var errorAll = function (err) {
49+
notFound();
50+
};
51+
var successAll = function (result) {
52+
if (!result || !result.data || !result.data.title) notFound();
53+
else {
54+
buildfire.analytics.trackAction(`DOCUMENT_${result.id}_OPENED`);
55+
ViewStack.push({
56+
template: 'Item',
57+
params: {
58+
controller: "WidgetItemCtrl as WidgetItem",
59+
itemId: result.id
60+
}
61+
});
62+
}
63+
};
64+
DataStore.getById(deeplinkData.id, TAG_NAMES.SEMINAR_ITEMS).then(successAll, errorAll);
65+
});
4166
//Refresh list of items on pulling the tile bar
4267

4368
buildfire.datastore.onRefresh(function () {
@@ -533,6 +558,7 @@
533558
Buildfire.spinner.hide();
534559
WidgetHome.busy = false;
535560
WidgetHome.seminarItemsInitialFetch = true;
561+
if (!resultAll.result) resultAll.result = [];
536562
WidgetHome.items = WidgetHome.items.length != 0 ? WidgetHome.items.concat(resultAll.result) : resultAll.result;
537563
var released = WidgetHome.items.filter(result => {
538564
return !result.data.releaseDate || result.data.releaseDate < Date.now();

widget/controllers/widget.item.controller.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,12 +296,12 @@
296296
/**
297297
* This event listener is bound for "Carousel:LOADED" event broadcast
298298
*/
299-
$rootScope.$on("Carousel2:LOADED", function () {
299+
let carouselListener = $rootScope.$on("Carousel2:LOADED", function () {
300300
// WidgetItem.view = null;
301301
if (WidgetItem.view)
302302
WidgetItem.view._destroySlider();
303303
if (!WidgetItem.view) {
304-
WidgetItem.view = new Buildfire.components.carousel.view("#carousel2", []);
304+
WidgetItem.view = new Buildfire.components.carousel.view(".carousel2", []);
305305
}
306306
if (WidgetItem.item.data && WidgetItem.item.data.carouselImages) {
307307
WidgetItem.view.loadItems(WidgetItem.item.data.carouselImages);
@@ -652,6 +652,7 @@
652652
});
653653

654654
WidgetItem.listeners['CHANGED'] = $rootScope.$on('VIEW_CHANGED', function (e, type, view) {
655+
carouselListener();
655656
if (type === 'POP') {
656657
DataStore.onUpdate().then(null, null, onUpdateCallback);
657658
}

widget/templates/Item.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<!--<div class="plugin-slide">-->
88
<!--<img src="../../../styles/media/holder-16x9.png">-->
99
<!--</div>-->
10-
<div id="carousel2" ng-if="WidgetItem.item.data.carouselImages.length" build-fire-carousel2=""
10+
<div class="carousel2" ng-if="WidgetItem.item.data.carouselImages.length" build-fire-carousel2=""
1111
ng-style="WidgetItem.item.data.carouselImages.length > 0 ? {'min-height': (9 * deviceWidth / 16) + 'px' } : {}">
1212
</div>
1313

widget/templates/Item_List_1.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
{{WidgetHome.languages.noItems}}
1717
<img style="margin-top: 35px;" src="./images/empty_page.svg"/>
1818
</p>
19-
<div class="list-item" ng-repeat="item in WidgetHome.released" ng-if="isFetchedAllData" ng-class="shouldLockItem(item.data.rank)" id="{{ 'seminarItem' + item.data.rank }}">
19+
<div class="list-item" ng-repeat="item in WidgetHome.released" ng-if="isFetchedAllData && !item.data['__$Deleted']" ng-class="shouldLockItem(item.data.rank)" id="{{ 'seminarItem' + item.data.rank }}">
2020
<div class="item-click-holder ellipsis" ng-click="WidgetHome.openDetails(item.id, item.data.rank, $index)">
2121
<div class="square-icon list-media-holder" ng-if="item.data.listImage || (!item.data.listImage && shouldLockItem(item.data.rank) === 'locked')">
2222
<img ng-if="item.data.listImage" class="border-radius-three" load-image="1x1" crop-width="60" crop-height="60"

widget/templates/Item_List_2.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
{{WidgetHome.languages.noItems}}
2020
<img style="margin-top: 35px;" src="./images/empty_page.svg"/>
2121
</p>
22-
<div class="list-item" ng-repeat="item in WidgetHome.released" ng-if="isFetchedAllData" ng-class="shouldLockItem(item.data.rank)" id="{{ 'seminarItem' + item.data.rank }}">
22+
<div class="list-item" ng-repeat="item in WidgetHome.released" ng-if="isFetchedAllData && !item.data['__$Deleted']" ng-class="shouldLockItem(item.data.rank)" id="{{ 'seminarItem' + item.data.rank }}">
2323
<div class="item-click-holder ellipsis" ng-click="WidgetHome.openDetails(item.id, item.data.rank, $index)">
2424
<div class="list-media-holder" ng-if="item.data.listImage || (!item.data.listImage && shouldLockItem(item.data.rank) === 'locked')">
2525
<img ng-if="item.data.listImage" class="border-radius-three" load-image="16x9" crop-width="120" crop-height="70"

widget/templates/Item_List_3.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
{{WidgetHome.languages.noItems}}
2121
<img style="margin-top: 35px;" src="./images/empty_page.svg"/>
2222
</p>
23-
<div class="list-item" ng-repeat="item in WidgetHome.released" ng-if="isFetchedAllData" ng-class="shouldLockItem(item.data.rank)" id="{{ 'seminarItem' + item.data.rank }}">
23+
<div class="list-item" ng-repeat="item in WidgetHome.released" ng-if="isFetchedAllData && !item.data['__$Deleted']" ng-class="shouldLockItem(item.data.rank)" id="{{ 'seminarItem' + item.data.rank }}">
2424
<div class="item-click-holder ellipsis" ng-click="WidgetHome.openDetails(item.id, item.data.rank, $index)">
2525
<div class="square-icon list-media-holder pull-left overflow-hidden" ng-if="item.data.listImage || (!item.data.listImage && shouldLockItem(item.data.rank) === 'locked')">
2626
<img ng-if="item.data.listImage" class="border-radius-three" load-image="1x1" crop-width="60" crop-height="60"

0 commit comments

Comments
 (0)