preparing mobile app for unsealed channel data

This commit is contained in:
Roland Osborne 2022-12-13 15:23:38 -08:00
parent 011a439870
commit 7559c39bca
6 changed files with 30 additions and 16 deletions

View File

@ -669,7 +669,7 @@ SPEC CHECKSUMS:
FirebaseInstallations: 99d24bac0243cf8b0e96cf5426340d211f0bcc80
FirebaseMessaging: 4487bbff9b9b927ba1dd3ea40d1ceb58e4ee3cb5
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a
GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f
GoogleUtilities: 1d20a6ad97ef46f67bbdec158ce00563a671ebb7
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431

View File

@ -5,7 +5,7 @@ export async function getChannels(server, token, revision) {
if (revision != null) {
param += `&channelRevision=${revision}`
}
param += `&types=${encodeURIComponent(JSON.stringify(['superbasic']))}`;
param += `&types=${encodeURIComponent(JSON.stringify(['sealed','superbasic']))}`;
let channels = await fetchWithTimeout(`https://${server}/content/channels${param}`, { method: 'GET' });
checkResponse(channels)
let ret = await channels.json()

View File

@ -8,7 +8,7 @@ export async function getContactChannels(server, token, viewRevision, channelRev
if (channelRevision != null) {
param += `&channelRevision=${channelRevision}`;
}
param += `&types=${encodeURIComponent(JSON.stringify(['superbasic']))}`;
param += `&types=${encodeURIComponent(JSON.stringify(['sealed','superbasic']))}`;
let channels = await fetchWithTimeout(`https://${server}/content/channels${param}`, { method: 'GET' });
checkResponse(channels)
return await channels.json()

View File

@ -132,7 +132,9 @@ export function useCardContext() {
detailRevision: channel?.data?.detailRevision,
topicRevision: channel?.data?.topicRevision,
detail: channel?.data?.channelDetail,
unsealed_detail: null,
summary: channel?.data?.channelSummary,
unsealed_summary: null,
});
}
const setCardChannelItem = (cardId, channel) => {
@ -148,6 +150,7 @@ export function useCardContext() {
let channel = card.channels.get(channelId);
if (channel) {
channel.detail = detail;
channel.unsealed_detail = null;
channel.detailRevision = revision;
card.channels.set(channelId, channel);
cards.current.set(cardId, card);
@ -160,6 +163,7 @@ export function useCardContext() {
let channel = card.channels.get(channelId);
if (channel) {
channel.summary = summary;
channel.unsealed_summary = null;
channel.topicRevision = revision;
card.channels.set(channelId, channel);
cards.current.set(cardId, card);

View File

@ -46,7 +46,9 @@ export function useChannelContext() {
update.channelId = channel?.id;
update.revision = channel?.revision;
update.detail = channel?.data?.channelDetail;
update.unsealedDetail = null;
update.summary = channel?.data?.channelSummary;
update.unsealedSummary = null;
update.detailRevision = channel?.data?.detailRevision;
update.topicRevision = channel?.data?.topicRevision;
channels.current.set(channelId, update);
@ -55,6 +57,7 @@ export function useChannelContext() {
let channel = channels.current.get(channelId);
if (channel) {
channel.detail = detail;
channel.unsealed_detail = null;
channel.detailRevision = revision;
channels.current.set(channelId, channel);
}
@ -63,6 +66,7 @@ export function useChannelContext() {
let channel = channels.current.get(channelId);
if (channel) {
channel.summary = summary;
channel.unsealed_summary = null;
channel.topicRevision = revision;
channels.current.set(channelId, channel);
}

View File

@ -1,7 +1,7 @@
import { useEffect, useState, useRef, useContext } from 'react';
import SQLite from "react-native-sqlite-storage";
const DATABAG_DB = 'databag_v048.db';
const DATABAG_DB = 'databag_v050.db';
export function useStoreContext() {
const [state, setState] = useState({});
@ -12,11 +12,11 @@ export function useStoreContext() {
}
const initSession = async (guid) => {
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS channel_${guid} (channel_id text, revision integer, detail_revision integer, topic_revision integer, blocked integer, sync_revision integer, detail text, summary text, offsync integer, read_revision integer, unique(channel_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS channel_topic_${guid} (channel_id text, topic_id text, revision integer, detail_revision integer, blocked integer, detail text, unique(channel_id, topic_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS channel_${guid} (channel_id text, revision integer, detail_revision integer, topic_revision integer, blocked integer, sync_revision integer, detail text, unsealed_detail text, summary text, unsealed_summary text, offsync integer, read_revision integer, unique(channel_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS channel_topic_${guid} (channel_id text, topic_id text, revision integer, detail_revision integer, blocked integer, detail text, unsealed_detail text, unique(channel_id, topic_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS card_${guid} (card_id text, revision integer, detail_revision integer, profile_revision integer, detail text, profile text, notified_view integer, notified_article integer, notified_profile integer, notified_channel integer, offsync integer, blocked integer, unique(card_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS card_channel_${guid} (card_id text, channel_id text, revision integer, detail_revision integer, topic_revision integer, sync_revision integer, detail text, summary text, offsync integer, blocked integer, read_revision integer, unique(card_id, channel_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS card_channel_topic_${guid} (card_id text, channel_id text, topic_id text, revision integer, detail_revision integer, blocked integer, detail text, unique(card_id, channel_id, topic_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS card_channel_${guid} (card_id text, channel_id text, revision integer, detail_revision integer, topic_revision integer, sync_revision integer, detail text, unsealed_detail text, summary text, unsealed_summary text, offsync integer, blocked integer, read_revision integer, unique(card_id, channel_id))`);
await db.current.executeSql(`CREATE TABLE IF NOT EXISTS card_channel_topic_${guid} (card_id text, channel_id text, topic_id text, revision integer, detail_revision integer, blocked integer, detail text, unsealed_detail text, unique(card_id, channel_id, topic_id))`);
}
const actions = {
@ -198,7 +198,7 @@ export function useStoreContext() {
},
setChannelItem: async (guid, channel) => {
const { id, revision, data } = channel;
await db.current.executeSql(`INSERT OR REPLACE INTO channel_${guid} (channel_id, revision, detail_revision, topic_revision, detail, summary) values (?, ?, ?, ?, ?, ?);`, [id, revision, data.detailRevision, data.topicRevision, encodeObject(data.channelDetail), encodeObject(data.channelSummary)]);
await db.current.executeSql(`INSERT OR REPLACE INTO channel_${guid} (channel_id, revision, detail_revision, topic_revision, detail, summary, unsealed_detail, unsealed_summary) values (?, ?, ?, ?, ?, ?, null, null);`, [id, revision, data.detailRevision, data.topicRevision, encodeObject(data.channelDetail), encodeObject(data.channelSummary)]);
},
clearChannelItem: async (guid, channelId) => {
await db.current.executeSql(`DELETE FROM channel_${guid} WHERE channel_id=?`, [channelId]);
@ -219,10 +219,10 @@ export function useStoreContext() {
await db.current.executeSql(`UPDATE channel_${guid} set blocked=? where channel_id=?`, [0, channelId]);
},
setChannelItemDetail: async (guid, channelId, revision, detail) => {
await db.current.executeSql(`UPDATE channel_${guid} set detail_revision=?, detail=? where channel_id=?`, [revision, encodeObject(detail), channelId]);
await db.current.executeSql(`UPDATE channel_${guid} set detail_revision=?, detail=?, unsealed_detail=null where channel_id=?`, [revision, encodeObject(detail), channelId]);
},
setChannelItemSummary: async (guid, channelId, revision, summary) => {
await db.current.executeSql(`UPDATE channel_${guid} set topic_revision=?, summary=? where channel_id=?`, [revision, encodeObject(summary), channelId]);
await db.current.executeSql(`UPDATE channel_${guid} set topic_revision=?, summary=?, unsealed_summary=null where channel_id=?`, [revision, encodeObject(summary), channelId]);
},
getChannelItemView: async (guid, channelId) => {
const values = await getAppValues(db.current, `SELECT revision, detail_revision, topic_revision FROM channel_${guid} WHERE channel_id=?`, [channelId]);
@ -246,7 +246,9 @@ export function useStoreContext() {
syncRevision: channel.sync_revision,
blocked: channel.blocked,
detail: decodeObject(channel.detail),
unsealedDetail: decodeObject(channel.unsealed_detail),
summary: decodeObject(channel.summary),
unsealedSummary: decodeObject(channel.unsealed_summary),
}));
},
@ -259,11 +261,12 @@ export function useStoreContext() {
blocked: topic.blocked,
detailRevision: topic.detail_revision,
detail: decodeObject(topic.detail),
unsealedDetail: decodeObject(topic.unsealed_detail),
}));
},
setChannelTopicItem: async (guid, channelId, topic) => {
const { id, revision, data } = topic;
await db.current.executeSql(`INSERT OR REPLACE INTO channel_topic_${guid} (channel_id, topic_id, revision, detail_revision, detail) values (?, ?, ?, ?, ?);`, [channelId, id, revision, data.detailRevision, encodeObject(data.topicDetail)]);
await db.current.executeSql(`INSERT OR REPLACE INTO channel_topic_${guid} (channel_id, topic_id, revision, detail_revision, detail, unsealed_detail) values (?, ?, ?, ?, ?, null);`, [channelId, id, revision, data.detailRevision, encodeObject(data.topicDetail)]);
},
clearChannelTopicItem: async (guid, channelId, topicId) => {
await db.current.executeSql(`DELETE FROM channel_topic_${guid} WHERE channel_id=? and topic_id=?`, [channelId, topicId]);
@ -285,7 +288,7 @@ export function useStoreContext() {
setCardChannelItem: async (guid, cardId, channel) => {
const { id, revision, data } = channel;
await db.current.executeSql(`INSERT OR REPLACE INTO card_channel_${guid} (card_id, channel_id, revision, detail_revision, topic_revision, detail, summary) values (?, ?, ?, ?, ?, ?, ?);`, [cardId, id, revision, data.detailRevision, data.topicRevision, encodeObject(data.channelDetail), encodeObject(data.channelSummary)]);
await db.current.executeSql(`INSERT OR REPLACE INTO card_channel_${guid} (card_id, channel_id, revision, detail_revision, topic_revision, detail, summary, unsealed_detail, unsealed_summary) values (?, ?, ?, ?, ?, ?, ?, null, null);`, [cardId, id, revision, data.detailRevision, data.topicRevision, encodeObject(data.channelDetail), encodeObject(data.channelSummary)]);
},
clearCardChannelItem: async (guid, cardId, channelId) => {
await db.current.executeSql(`DELETE FROM card_channel_${guid} WHERE card_id=? and channel_id=?`, [cardId, channelId]);
@ -300,10 +303,10 @@ export function useStoreContext() {
await db.current.executeSql(`UPDATE card_channel_${guid} set sync_revision=? where card_id=? and channel_id=?`, [revision, cardId, channelId]);
},
setCardChannelItemDetail: async (guid, cardId, channelId, revision, detail) => {
await db.current.executeSql(`UPDATE card_channel_${guid} set detail_revision=?, detail=? where card_id=? and channel_id=?`, [revision, encodeObject(detail), cardId, channelId]);
await db.current.executeSql(`UPDATE card_channel_${guid} set detail_revision=?, detail=?, unsealed_detail=null where card_id=? and channel_id=?`, [revision, encodeObject(detail), cardId, channelId]);
},
setCardChannelItemSummary: async (guid, cardId, channelId, revision, summary) => {
await db.current.executeSql(`UPDATE card_channel_${guid} set topic_revision=?, summary=? where card_id=? and channel_id=?`, [revision, encodeObject(summary), cardId, channelId]);
await db.current.executeSql(`UPDATE card_channel_${guid} set topic_revision=?, summary=?, unsealed_summary=null where card_id=? and channel_id=?`, [revision, encodeObject(summary), cardId, channelId]);
},
getCardChannelItemView: async (guid, cardId, channelId) => {
const values = await getAppValues(db.current, `SELECT revision, detail_revision, topic_revision FROM card_channel_${guid} WHERE card_id=? and channel_id=?`, [cardId, channelId]);
@ -327,7 +330,9 @@ export function useStoreContext() {
topicRevision: channel.topic_revision,
syncRevision: channel.sync_revision,
detail: decodeObject(channel.detail),
unsealedDetail: decodeObject(channel.unsealed_detail),
summary: decodeObject(channel.summary),
unsealedSummary: decodeObject(channel.unsealed_summary),
blocked: channel.blocked,
}));
},
@ -343,11 +348,12 @@ export function useStoreContext() {
blocked: topic.blocked,
detailRevision: topic.detail_revision,
detail: decodeObject(topic.detail),
unsealedDetail: decodeObject(topic.unsealed_detail),
}));
},
setCardChannelTopicItem: async (guid, cardId, channelId, topic) => {
const { id, revision, data } = topic;
await db.current.executeSql(`INSERT OR REPLACE INTO card_channel_topic_${guid} (card_id, channel_id, topic_id, revision, detail_revision, detail) values (?, ?, ?, ?, ?, ?);`, [cardId, channelId, id, revision, data.detailRevision, encodeObject(data.topicDetail)]);
await db.current.executeSql(`INSERT OR REPLACE INTO card_channel_topic_${guid} (card_id, channel_id, topic_id, revision, detail_revision, detail, unsealed_detail) values (?, ?, ?, ?, ?, ?, null);`, [cardId, channelId, id, revision, data.detailRevision, encodeObject(data.topicDetail)]);
},
clearCardChannelTopicItem: async (guid, cardId, channelId, topicId) => {
await db.current.executeSql(`DELETE FROM card_channel_topic_${guid} WHERE card_id=? and channel_id=? and topic_id=?`, [cardId, channelId, topicId]);