d0569f4
Do not catchup low-balance notifications for expired customers
Click to expand commit body
Makes the number of users to do on startup much smaller and slower-growing.
Expired users have been told about their low balance quite a bit already, and
will be notified by billing cronjob etc from here out.
Stephen Paul Weber
created
07aca05
Optional alternate transcription with rev.ai
Click to expand commit body
The bitfield bit 1 was used by a different project (sgx-catapult, see:
https://gitlab.com/ossguy/sgx-catapult/-/commit/459d7d1dfe208db1708f1d648b82b38c002ad35a).
This other project no longer uses the bit, and in fact that whole project is
dead and gone, but if you previously ran that project against the same redis
that you now run this project against then please make sure you have zeroed-out
that bit first.
You can verify using this script:
redis = Redis.new
redis.keys("catapult_settings_flags-*").each do |k|
p redis.getbit(k, 1)
end
Stephen Paul Weber
created
ab95e3b
Bad XML parser produces hash for one element, array for >1
* more-admin-info:
Test Admin Info with Numbers
Refetch Customer on Repeated Customer Info Calls
Trust Level in Customer Info
Show Callability State in Customer Info
PromiseHash
No Settled Transactions is 0, not Null
My current two AdminInfo tests have unregistered customers because it's
easier, but it means that some parts of the logic don't get tested.
This one digs a bit deeper to test this part of the forms, but it
requires injecting a repo
Christopher Vollick
created
ebd6fcc
Refetch Customer on Repeated Customer Info Calls
Click to expand commit body
This means if I fetch a user, make a change (add a transaction, set
their trust level, etc), I can re-run info from the menu to get the same
user with up-to-date info, so you can see the thing I just did reflected
back to me.
This shows relatively easily which class a given user finds themselves
in.
Whether they can't call because they have no balance, or if they have
lots of room, or if they're being asked.
Hopefully this will make it easier to tell at a glance if a calling
issue is due to a few things.
Here in info I'm doing a lot of this pattern:
EMPromise.all([one, two three]).then { |one, two, three|
new(one: one, two: two, three: three)
}
Which felt really noisy for what is a pretty logical operation.
So now I can keep the keys and values together and do:
PromiseHash.all(one: one, two: two, three:three).then(&method(:new))
It's smaller, but more importantly it's more meaningful to me.
It keeps the declaration of the meaning together with the sourcing of
the value.
And because it uses EMPromise.all in the guts it's not a problem if some
of the keys are not promises.
Easy-peasy!
* message-limits:
Block outgoing messages when expired
Contacting support is not billable
Use TrustLevel to determine daily quota
Refactor message limits, change to 500/day
This allows a customer to change their JID, but it's a bit raw.
In practice I don't expect anyone to actually run this directly, instead
cheogram covers with with a friendlier and safer version.
This is just the business.