08-24-2022 08:57 - edited 08-24-2022 08:58
08-24-2022 08:57 - edited 08-24-2022 08:58
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!
08-26-2022 09:54
Fitbit Product Experts Alumni are retired members of the Fitbit Product Expert Program. Learn more
08-29-2022 09:05
08-29-2022 09:05
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 Answer08-29-2022 09:12
Fitbit Product Experts Alumni are retired members of the Fitbit Product Expert Program. Learn more
08-29-2022 12:59
Gold Fitbit Product Experts share support knowledge on the forums and advocate for the betterment of Fitbit products and services. Learn more
08-29-2022 12:59
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.
08-29-2022 12:59
08-29-2022 12:59
thanks! How can I reach them for this purpose? Is the above email address the best way?
Best Answer08-29-2022 13:06
Gold Fitbit Product Experts share support knowledge on the forums and advocate for the betterment of Fitbit products and services. Learn more
08-29-2022 13:06
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)}
08-29-2022 13:11 - edited 08-29-2022 13:26
08-29-2022 13:11 - edited 08-29-2022 13:26
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 Answer08-29-2022 13:17 - edited 08-29-2022 13:18
Gold Fitbit Product Experts share support knowledge on the forums and advocate for the betterment of Fitbit products and services. Learn more
08-29-2022 13:17 - edited 08-29-2022 13:18
(Deleted post.)
Best Answer08-29-2022 13:29
Gold Fitbit Product Experts share support knowledge on the forums and advocate for the betterment of Fitbit products and services. Learn more
08-29-2022 13:29
Do you have the clockface installed in the Fitbit simulator?
Best Answer08-29-2022 13:41
08-29-2022 13:41
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 Answer08-29-2022 13:46
Gold Fitbit Product Experts share support knowledge on the forums and advocate for the betterment of Fitbit products and services. Learn more
08-29-2022 13:46
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.
Best Answer
08-29-2022
21:02
- last edited on
07-20-2024
10:56
by
MarreFitbit
Fitbit Product Experts Alumni are retired members of the Fitbit Product Expert Program. Learn more
08-29-2022
21:02
- last edited on
07-20-2024
10:56
by
MarreFitbit
@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 Answer08-30-2022 10:10
10-29-2022 20:31
Fitbit Product Experts Alumni are retired members of the Fitbit Product Expert Program. Learn more
10-31-2022 14:09
10-31-2022 14:09
@Guy_ No, I haven't received any response to my request yet 😕
Best Answer