Skip to content

Commit 69cade6

Browse files
author
CalorieApp Maintainer
committed
harden: gate CalorieDB behind flag, remove unreachable preload, refine .gitignore (narrow sensitive patterns, add caloriedb data)
1 parent 5932840 commit 69cade6

3 files changed

Lines changed: 31 additions & 27 deletions

File tree

.gitignore

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,19 @@ dmypy.json
132132
.buildozer/
133133
bin/
134134

135-
# Wallet data files (sensitive)
135+
# Wallet data files (sensitive, restrict to wallet_data only)
136136
wallet_data.dat
137137
wallet_data.bak
138138
wallet_data.dir
139-
*.dat
140-
*.bak
141-
*.dir
139+
140+
# CalorieDB (deferred feature) runtime data stores
141+
data/calorie_links.json
142+
data/caloriedb_private/
143+
data/caloriedb_public/
144+
data/caloriedb_sync/
145+
data/*.enc
146+
147+
# Avoid blanket ignoring all .dat/.bak/.dir (removed) to allow legitimate data assets
142148

143149
# Temporary files
144150
*.tmp
@@ -298,10 +304,12 @@ src/utils/wallet_connect/
298304
src/utils/pro_*.py
299305
src/utils/xrpl_caloriedb_sync.py
300306
src/utils/calorie_linking.py
307+
# Deferred experimental screens (keep Web3 browser ignored to prevent accidental reintroduction)
301308
src/screens/Web3BrowserScreen.py
302-
src/screens/WebViewScreen.py
303-
src/screens/BarcodeScanScreen.py
304-
src/screens/CameraScanScreen.py
309+
# Active screens needed for app runtime (stop ignoring)
310+
!src/screens/WebViewScreen.py
311+
!src/screens/BarcodeScanScreen.py
312+
!src/screens/CameraScanScreen.py
305313

306314
# Progress docs & internal summaries (not for public)
307315
docs/archive/

src/core/app.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -580,20 +580,5 @@ def on_stop(self):
580580

581581

582582
if __name__ == "__main__":
583+
# Direct run path for standalone execution
583584
CalorieAppTestnet().run()
584-
585-
def on_start(self):
586-
try:
587-
from kivy.clock import Clock
588-
Clock.schedule_once(self._preload_screens, 0.8)
589-
except Exception:
590-
pass
591-
592-
def _preload_screens(self, *_):
593-
try:
594-
_ = self.manager.get_screen('wallet_screen')
595-
_ = self.manager.get_screen('settings_screen')
596-
_ = self.manager.get_screen('send_xrp_screen')
597-
print('✅ Screens pre-loaded')
598-
except Exception:
599-
pass

src/screens/FoodTrackScreen.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@
33
from kivy.clock import Clock
44

55
from src.utils.foodrepo_client import FoodRepoClient
6-
from src.utils.caloriedb import record_scan
6+
7+
# CalorieDB prototype deferred behind feature flag
8+
from src.core.feature_flags import ENABLE_CALORIE_DB
9+
try: # Safe guarded import of deferred module
10+
if ENABLE_CALORIE_DB:
11+
from src._deferred.caloriedb import record_scan # type: ignore
12+
else:
13+
record_scan = None # type: ignore
14+
except Exception:
15+
record_scan = None # type: ignore
716

817
try:
918
from kivy_garden.zbarcam import ZBarCam
@@ -150,13 +159,15 @@ def _format_nutrition(self, product: dict) -> str:
150159
return "\n".join(lines) if lines else "Nutrition info not available"
151160

152161
def record_to_caloriedb(self):
153-
"""Record food scan to CalorieDB (IPFS/BigchainDB pilot)"""
162+
"""Attempt to record food scan to CalorieDB if feature enabled."""
163+
if not ENABLE_CALORIE_DB or record_scan is None:
164+
self.result_text = "CalorieDB feature deferred (disabled)."
165+
return
154166
if not self.product or not self.last_barcode:
155167
self.result_text = "Lookup a product first"
156168
return
157-
158169
try:
159-
entry = record_scan(self.product, self.last_barcode)
170+
entry = record_scan(self.product, self.last_barcode) # type: ignore[arg-type]
160171
cid = entry.get("ipfs_cid")
161172
tx = entry.get("bigchaindb_tx_id")
162173
self.result_text = f"✓ Recorded to CalorieDB\nCID: {cid or 'n/a'}\nTX: {tx or 'n/a'}"

0 commit comments

Comments
 (0)