Posts match “ angular-easyfb ” tag:

angular-easyfb v0.2.0 released!

http://github.com/pc035860/angular-easyfb

  • AngularJS $q promise support
  • Fix minified code run-time error

0.2.0 加入了 $q promise 的支援,因此 增加了在 view 裡面使用的彈性

更新:AngularJS 1.2.0 之後將 promise 在 view 中自動 unwrap 的功能 deprecate 了,因此支援 promise 可能未來並不會增加在 view 裡面使用的彈性。

API demo (promise version)

angular-easyfb v0.2.2 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v0.2.2

  • setInitFunction() in configure block for initialization customization
  • Make $FB.Event.unsubscribe unsubscribes events properly

2014 的第一天修掉了一個可怕的 bug。

之前照著人家回報的 issue 做了一個 plunk,意外發現 $FB.Event.unsubscribe 竟然沒有作用(雖然那 issue 不是回報這個),查了 Facebook 的 doc 才發現 FB.Event.unsubscribe 需要帶上原本 call FB.Event.subscribe 時用的 listener function 才能夠順利運作。

老實說以目前的 implementation 要讓這件事可以 work 還蠻玄妙的,總之還是改好了 YA!
FB.Event 應該算是蠻常用到的 API ,出 bug 真是太可怕了...

angular-easyfb v0.3.0 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v0.3.0

  • 可以自訂 FB JS SDK 的載入
  • 所有 Facebook social plugin 變成內建 directive,換句話說什麼都不用做就會 work
  • 承上,deprecate 之前為達相同功能所使用的 ezfbXfbml directive

加上 test 的二三事

其實推上 v0.3.0 的最後推手是加上了全部的 unit test spec... 來說說想加上 test 的原因吧!

angular-easyfb 這個 module 其實說來開發起來蠻麻煩的... 基本上從第一版寫完之後,後來我再繼續改都是用第一版的 demo plunk 做為依據,換掉其中載入在 GitHub Pages 的 script,改成載入另外的開發用版本。為什麼? 因為似乎在本地開 server 來做開發的話,Facebook JavaScript SDK 跑不起來(但老實說我沒有真的試過... 去 developer panel 裡改一些 domain 相關的設定可能會有機會吧)

不斷把程式碼貼來貼去的厭煩度終於在 v0.2.x 達到了巔峰。我知道寫了 test 之後,應該可以大大改善這情況,畢竟我不再需要載入真正的 SDK 來確保我所有的功能都可以正常運作(在 test 裡面 mock FB SDK 的 API 就好了),也就可以從來回剪貼程式碼於 Plunker 跟 Sublime Text 的循環中解脫了!

看著之前在 GitHub repo 的 README 裡面寫下的

TODO
  • test

心裡默默的覺得時機已經成熟,就差臨門一腳。詳見 AngularJS test 新手上路 (1) - 基本環境設定

自訂 SDK 載入,帶來新的可能

這版新增了可以自訂 SDK 載入的功能,讓這個 module 有了使用在 Apache Cordova (or Phonegap) 裡的可能。透過 Apache Cordova Facebook Plugin,只需要載入本地的 facebook-js-sdk.js 後再自訂一下觸發 FB.init() 的時機即可。

這個 Simple example 為例,與 AngularJS 及 angular-easyfb 結合之後要能夠順利 init 只需要加上

// angular config phase

.config(function ($FBProvider) {
  $FBProvider.setInitParams({
    appId: "{APP ID}", 
    nativeInterface: CDV.FB, 
    useCachedDialogs: false 
  });

  $FBProvider.setLoadSDKFunction(function ($document, $fbAsyncInit) {
    // 上面的 HTML 已經用 <script> 載入了 facebook-js-sdk.js,這邊就不用載了

    $document.on('deviceready', function () {
      $fbAsyncInit();
    });
  });
})

就可以順利運作了。 (相關 issue)

未來展望

angular-easyfb 作為一個讓 AngularJS 與 Facebook JavaScript SDK 合作更輕鬆且密切的 module,老實說 v0.3.0 已經接近它最後的樣貌了。現在整個 module 的彈性與方便性都好到一個不行!

結論,我真的不知道還要加什麼功能了... 所以這個 module 基本上應該會轉型為只修 bug 的狀態一直 maintain 下去,在這邊就先下台一鞠躬,謝謝收看。

angular-easyfb v0.3.1 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v0.3.1

  • 內建的 social plugin directive 們支援套用動態字串參數

不知道算是「修 bug」還是「加 feature」

寫 directive 的給參數方式其實完全看到底想怎麼用,基本上我本人是沒有需要動態改參數的需求...
不過似乎有些使用者在切換 route path 之後就會發生參數沒帶到而無法顯示的情況(參數我想主要是 href 之類的),看來大家都很自然的把這些東西寫在 $scope.xxx 啊...

超難寫的 test

這個小改版,我大部分時間都花在寫 test 上了...
不過是餵個參數,竟然這麼難寫... 不知道是不是我自己想太多的關係

https://github.com/pc035860/angular-easyfb/blob/master/test/unit/social-plugin-directive.spec.js

angular-easyfb v1.0.0 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v1.0.0

  • $FB service 改名為 ezfb
  • 一些 local 的 DI 也都改名了
    • $fbInitParams -> ezfbInitParams
    • $fbAsyncInit -> ezfbAsyncInit
    • $fbLocale -> ezfbLocale

就在前天,出現了一條 issue: Best practice: don't $-prefix this service

一看發現竟然是 Angular team 的 Brian Ford 大大...

原來是兩個多月以前有一個好心的路人覺得這 module 不錯用,經過自己的一番比較與研究之後(也有寫了自己的 FB service),似乎覺得可以把這個 module 擺到 Angular docs 裡面某處推薦的連結裡,於是他就發了一個 PR

Brian Ford 終於有一天審到這個 PR,就來 angular-easyfb 這邊逛了一下,發現我的 service 叫做 $FB,如果要擺入docs 推薦的連結似乎不妥,因為 Angular team 方面認為 $-prefixed 的 service 基本上是保留給 Angular native 的。

我以前不知道這回事,也看很多別的非 native module 用 $-prefixed 的 service 用得很過癮(例如 angularFireui-router),所以當年才會取了 $FB 這個直覺上跟原本的 FB 很搭的名字。

總之既然知道有 best practice 可以 follow,我就改一下好了。說不定還有機會擺進官方 docs 推薦連結 ㄆㄆ

另外因為是個 breaking change,版號直上 1.0.0 了。

angular-easyfb v1.1.0 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v1.1.0

Facebook 似乎總是對開發者釋出善意,但我個人感覺實際上做的事情卻往往是不友善的...

幾個月前的 F8 大會上,Facebook 大動作想要讓他們的平台更迭系統化一點,終於推出了殺手級的改動 - platform versioning。於是很自然的也更新了一些原本 JavaScript SDK 的部分,這次 angular-easyfb 的更新基本上就是順應 Facebook 的野心...

續集: 週末長知識: Facebook Platform Versioning

angular-easyfb v1.2.0 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v1.2.0

我發現 Parse 的人好像真的不少。

最近一次被路人推薦之後,馬上下面對話就有人問 Parse,而且同一串還有兩個人在講。

之後應該會找時間來 setup 一下測試 Cordova / Parse 的環境,確定沒問題之後就穩定添加到 README 吧!

angular-easyfb v1.4.0 released!

https://goo.gl/9tPWeC

  • 支援 Ad Preview Plugin
  • 有鑑於支援 Ad Preview Plugin,將預設的 platform version 改為最新的 2.4

這次再版號上面其實是有點糾結的,主要是因為經歷了 Facebook Platform 從不需要帶 version 到需要帶 version 的這個轉換。

FB 1.0 -> FB 2.0

原本 init parameters 裡面不帶版號就使用的人再升到 FB 2.0 可能會遇到的問題是

  • 沒有帶版號所以預設使用 FB 2.0,造成自己有再使用的某些 API 崩壞

FB 官方的 API 文件其實是有明確表示需要帶版號的

然而從今年三月過後 FB 1.0 完全 deprecated,我為了盡量不造成人家的 app 掛掉,選擇預設帶入最舊的版號 2.0

FB 2.0 -> FB 2.4

結果前幾天一個新的 PR 表示想要支援一個新的 Facebook plugin 叫做 Ad Preview,這個 plugin 需要的是 FB 2.4。而這真的是尷尬到了極點啊~~~~

經過長考(!?)之後,還是決定以後都就直接帶入最新的 platform version 好了,反正依據官方文件這樣才是正確的行為。

於是乎,為了盡量造成最小的損害,我還是讓 version 的中間版號加了個 1 ,表示這還算是個有點大的改動。

Release 之後還是小小的擔心啊...