Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

how to recover my fba file

For some reason, I lost access to the final fba file of the clock face app I uploaded to the Fitbit gallery. The app's already published, and I wonder how to recover this file. I have contacted the gallery support team a few times by email at the address below, but I haven't heard anything so far.
appgallerysupport@fitbit.com

 

I'd appreciate it if you could give me some advice regarding this. Thanks!

Best Answer
0 Votes
15 REPLIES 15

Hi @Pedramn  - if you made no changes just rebuild a new FBA and export it so you have a matching source if need be.

Author | ch, passion for improvement.

Best Answer

Thanks for your reply @Guy_!
For some reason, my source code's also gone, and I can't recover it either. That's why I am going to get the fba file so that I may be able to convert that to my source.

Best Answer
0 Votes

@Pedramn - they are probably a bit busy with the launch of the new watches, try contacting them again, there must surely be some backup as the source is kept on their servers, mark it urgent.

Author | ch, passion for improvement.

Best Answer

I don't think the .fba will help you much. Even though its just a renamed .zip file and contains JS, the JS is minified and is quite different to your source code. Imports are merged, variable names are different, layout is compressed, and so on. I don't think you could take code from the .fba and use it as source code without a LOT of work.

 

Can you side-load the .fba into the sim? If so, you can get access to the code within the .fba.

Peter McLennan
Gondwana Software
Best Answer

thanks! How can I reach them for this purpose? Is the above email address the best way?

Best Answer
0 Votes

To show what's in a .fba, here's index.js from one of my .fba files:

"use strict"
var e=require("clock"),t=require("device"),i=require("display"),a=require("document"),n=require("file-transfer"),c=require("fs"),d=require("heart-rate"),o=require("jpeg"),r=require("user-activity"),l=require("user-settings")
function s(e){return e&&e.__esModule?e:{default:e}}var u,y,f,v,g,p,x,b,k=s(a),h=t.me.screen.width,m=k.default.getElementById("image"),B=k.default.getElementById("hour"),w=k.default.getElementById("colon"),S=k.default.getElementById("min"),E=k.default.getElementById("dateSec"),I=k.default.getElementById("icon"),q=k.default.getElementById("act"),A=k.default.getElementById("touch"),j="us"===l.units.distance?621371e-9:.001,D=[60,50,73,107,102],F={sec:!0,activity:0,col:"#40e0e0",background:void 0}
function z(){E.style.fill=w.style.fill=q.style.fill=F.col}function L(e){F.sec&&!e&&(E.textAnchor="start",E.x=h/2-35),F.sec||(E.textAnchor="middle",E.x=h/2)}function M(){I.href=F.activity+".png",I.x=D[F.activity],q.x=I.x+60,4===F.activity?(q.text="—",y.start()):T()}function T(){y.stop(),void 0!==b&&(clearTimeout(b),b=void 0)}function H(){R(new Date)}function R(e){var t,a,n=e.getHours(),c=e.getMinutes()
if(n!==f&&(f=n,a=n,n="12h"===l.preferences.clockDisplay?(a%=12)||12:_(a),B.text=n,g=B.getBBox().width,t=!0,!F.sec)){var d=e.getDate()
d!==x&&(E.text=d,x=d)}if(c!==v&&(v=c,S.text=_(c),p=S.getBBox().width,t=!0),t){var o=(h-g-u-p)/2
B.x=o,w.x=o+g,S.x=w.x+u}if(!i.display.aodActive){var s=e.getSeconds()
switch(F.sec&&(E.text=_(s)),w.style.display=s%2?"none":"inline",F.activity){case 0:q.text=r.today.adjusted.calories.toLocaleString()
break
case 1:q.text=r.today.adjusted.steps.toLocaleString()
break
case 2:q.text=(r.today.adjusted.distance*j).toFixed(2)
break
case 3:q.text=r.today.adjusted.activeZoneMinutes.total}}}function _(e){return e<=9?"0"+e:e}function O(){b=void 0,q.text="—"}function Y(e){e?4===F.activity&&y.start():4===F.activity&&T()}function Z(){for(var e;e=n.inbox.nextFile();){var t
switch(t=e.lastIndexOf("."),e.slice(t+1)){case"jpg":C(e)
break
case"cbor":G(e)}c.unlinkSync(e)}J()}function C(e){F.background&&c.unlinkSync(F.background),F.background=Date.now()+".txi",o.decodeSync(e,F.background,{overwrite:!0}),m.href="/private/data/"+F.background}function G(e){var t,i=c.readFileSync(e,"cbor")
for(var a in i)switch(t=i[a],a){case"col":F.col=t,z()
break
case"background-none":F.background&&c.unlinkSync(F.background),F.background=void 0,m.href=""}}function J(){c.writeFileSync("state.cbor",F,"cbor")}!function(){var e
try{e=c.readFileSync("state.cbor","cbor"),F=e}catch(e){}}(),z(),F.background&&(m.href="/private/data/"+F.background),Z(),n.inbox.onnewfile=Z,(y=new d.HeartRateSensor({frequency:1})).addEventListener("reading",(function(){void 0!==b&&clearTimeout(b),b=setTimeout(O,2e4),q.text=y.heartRate})),"12h"===l.preferences.clockDisplay&&(B.style.fontSize=w.style.fontSize=S.style.fontSize=135,k.default.getElementById("time").y=216,k.default.getElementById("div-upper").y=88,k.default.getElementById("div-lower").y=236),u=w.getBBox().width,L(!0),M(),e.default.granularity="seconds",e.default.ontick=function(e){R(e.date)},A.onclick=function(e){e.screenY<h/2?(F.sec=!F.sec,L(),f=x=void 0,H()):(F.activity=++F.activity%5,M(),H()),J()},i.display.aodAvailable&&(i.display.aodAllowed=!0),i.display.onchange=function(){i.display.aodAllowed&&i.display.aodEnabled?(e.default.granularity=i.display.aodActive?"minutes":"seconds",E.style.display=I.style.display=q.style.display=m.style.display=i.display.aodActive?"none":"inline",i.display.aodActive&&(w.style.display="inline"),Y(!i.display.aodActive&&i.display.on)):Y(i.display.on)}
Peter McLennan
Gondwana Software
Best Answer

Thanks for your reply! Yes, it is not that easy I thought.

but I thought since I have older versions by comparing them I can figure out the differences. 

 

BTW, @Gondwana I am not familiar with this terminology: "side-load"! What do you mean by that?

Best Answer
0 Votes

(Deleted post.)

Peter McLennan
Gondwana Software
Best Answer
0 Votes

Do you have the clockface installed in the Fitbit simulator?

Peter McLennan
Gondwana Software
Best Answer
0 Votes

yes it was installed once on another laptop but the source code + .fba file + simulator version, all have gone because the laptop has been stolen. 

Best Answer
0 Votes

Oh, sorry to hear that. ☹️  The contents of the .fba can be found within the sim, but if you don't have that either, it doesn't help you much.

Peter McLennan
Gondwana Software
Best Answer
0 Votes

@Pedramn  -  sorry about the laptop, yes the email address is the right one, mark it urgent.

 

The source is on the servers, just how to open a new project without deleting it is an important process to respect.

 

They should be able to guide you but as it is unusual it may take time to work out how.

Author | ch, passion for improvement.

Best Answer
0 Votes

@Guy_ and @Gondwana, thanks for your help 🙂

Best Answer
0 Votes

@Pedramn  - just checking were you able to get this resolved?

Author | ch, passion for improvement.

Best Answer
0 Votes

@Guy_ No, I haven't received any response to my request yet 😕

Best Answer
0 Votes